[英]Rails3 URI() if condition not working
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']。 但是它仍然繼續保存它。 我已經嘗試了幾種條件。 我究竟做錯了什么?
一些建議:
看起來您正在嘗試確定何時在分階段運行或開發與生產中運行,在這種情況下,您可以簡單地使用:
Rails.env.production?
獲取該信息。 您還可以設置一個臨時環境,以將其部署在dev-beta.foo.com網站上,您可以在其中使用Rails.env.staging?
以同樣的方式。
要調試您所詢問的特定問題,只需找出測試失敗的請求上的request.referer變量是什么,然后打開控制台並一次測試一個邏輯條件,然后一起查看哪些條件失敗。
最后,我個人的喜好是查看放置在before過濾器本身上的邏輯條件,但這可能不是普遍的看法。
編輯我可能還要補充一點,您的最后一個條件!= "3000"
可能什么也不做; 我不認為port
方法會返回字符串...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.