2011-03-30 121 views
10

嘿,我允許我的應用程序通過https和http訪問,並且除了當我使用任何_url方法時,一切正常。如果我通過https訪問使用這種方法的視圖,則它會充當https,但生成的url使用http協議。我想知道這是否正常,或者是否有辦法使其自動化。我希望rails會根據頁面的訪問方式自動生成適當的url。使rails url助手使用適當的協議?

如果沒有辦法解決這個問題,創建合適的url最好的方法是什麼?這會工作嗎?

if request.ssl? 
    some_url(:protocol => "https") 
else 
    some_url 
end 

我更喜歡它,如果我能想出更自動的方法。也許如果軌道URL方法生成://somedomain.com/some/path,那樣我想象它會自動適應正確的協議。

謝謝,我將不勝感激任何幫助。

回答

2

看起來有幾種方法。這些都不適合您的特定環境,但在ActionView::Helpers中有一個url_for方法,如果您開始使用該方法,可能會得到您想要的結果。另一個簡單的選擇是使用相對URL(即:'/ controller/action'而不是'https://myawesomesite.com/controller/action'),它也可以由url_for方法生成。

除此之外,它看起來像你進入解決方法,或挖掘到rails路徑生成的代碼,並自己改變它。

不是您尋找的最理想的答案,而是我的$ 0.02!

+0

謝謝反正,這給了我一些想法。 – 2011-03-30 23:17:13

+1

url_for使用Rails 3.1和Ruby 1.9.2爲我工作 – codecraig 2011-10-05 13:49:05