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在我的本地机器,我不想保存我的会话['referer']中的request.referer。但它仍然继续保存它。我已经尝试了几个条件。我究竟做错了什么?Rails3 URI()如果条件不起作用
你试过这个之前检查过你的'session'吗?你什么时候清理会议?您是否有可能早先设置了会话,并且在连续尝试中您认为会话正在设置? if条件看起来不错。 – vee
是的,我在我看来使用<%= debug session ['referer'] - %>来检查它。在我的控制器中重定向后,我将它设置为零。我真的认为if语句很好,但我不知道为什么它不起作用。 –
看到我下面的评论。最后一个条件是将一个Fixnum与一个字符串“3000”进行比较,所以显然这个逻辑不能执行你想要的。只需打开一个控制台并逐一测试所有内容,这将花费更少的时间。 – tyler