簡體   English   中英

Rails3 URI()如果條件不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM