class ApplicationController < ActionController::Base
before_filter :store_ref_url
def store_ref_url
rf = request.referer
if ((URI(rf.to_s).host != "dev-beta.foo.com") && (URI(rf.to_s).host != "beta.foo.com") && URI(rf.to_s).port != "3000")
session['referer'] = request.referer
end
end
end
如果域名是“dev-beta.foo.com”或“beta.foo.com”,或者本地机器中的端口是3000,我不想在我的会话中保存request.referer ['referer' ]。但它仍然继续保存它。我已经尝试了几个条件。我做错了什么?
答案 0 :(得分:0)
一些建议:
看起来您正在尝试确定何时在升级或开发与生产中运行,在这种情况下您只需使用:
Rails.env.production?
获取该信息。您还可以设置一个临时环境,以便在dev-beta.foo.com网站上进行部署,您可以以同样的方式使用Rails.env.staging?
。
要调试您提出的具体问题,只需查看request.referer变量对您的测试失败的请求是什么,然后打开一个控制台并一次测试一个逻辑条件然后一起查看条件失败。
最后,我个人的偏好是看到过滤器本身的逻辑条件,但这可能不是普遍的情绪。
修改强>
我还可以补充一点,你的最后一个条件!= "3000"
可能没有做任何事情;我认为port
方法不会返回字符串...