2012-01-02 32 views
3

有沒有辦法將外部資源鏈接放入,這些外部資源會自動添加基於當前協議的協議?Rails URL生成器開關http/https

例如我想要顯示來自Facebook的Graph API的圖像。我希望我可以做這樣的事情:

image_tag url_for("/1234567/picture", :host => "graph.facebook.com") 

從而使url_for只是立足於當前請求的協議的協議。

我知道這工作,但我希望有一個更好的辦法:

image_tag("#{request.protocol}://graph.facebook.com/1234567/picture") 

回答

3

您可以添加協議的選項來url_for。

image_tag url_for("/1234567/picture", :host => 'graph.facebook.com', :protocol => request.protocol) 

,或者一個更好的方法是創建一個幫助(如果你這樣做了很多)叫做url_for_same_protocol(或任何你想要的):

class ApplicationHelper 
    def url_for_same_protocol(url, options) 
    options[:protocol] ||= request.protocol 
    url_for url, options 
    end 
end 

..然後只需更換您的url_for請致電url_for_same_protocol

+3

這就是我所希望的,但這不起作用。 url_for接受一個完整的URL字符串或一個可以指定動作,控制器,主機,協議等選項的哈希,但不能同時 – Engwan 2012-01-03 06:40:26