2013-12-23 41 views
0

我有我所用force_ssl方法如何強制SSL到特定的命名路線Rails中

def force_ssl # to use https for payment page 
    if !Rails.env.development? && !request.ssl? 
    redirect_to :protocol => 'https' 
    end 
end 

爲特定的動作名稱「ABC」與名爲航線

匹配「Rails應用程序/找到-A-ABC」 => 「回家#ABC」

,當我去到URL

http://local.demo.com/find-a-abc

它會redirect_to https://local.demo.com/abc

任何解決方案?所以它會重定向到特定的路由,而不是在使用https協議時重定向到Action。

+0

將定義'force_ssl'作爲'before_filter'工作? – benjaminjosephw

+0

是的,它工作完美,但我的問題是重定向到行動,而不是命名路徑。 –

回答

0

看起來您並未在此處提供命名路線(即match '/find-a-abc' => "home#abc", :as => :named_route)。您需要執行此操作並致電named_route_url,而不僅僅是控制器和操作才能獲取正確的URL。

如果你想有一個特定的路線始終與SSL處理,您可以定義像這樣的路線:

scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do 
    match '/find-a-abc' => "home#abc", :as => :abc 
end 

然後abc_url應該永遠是「https://local.demo.com/find-a-abc

+0

謝謝,它的工作 –