2012-01-02 3 views
3

現在のプロトコルに基づいて自動的にプロトコルを追加する外部リソースへのリンクを入れる方法はありますか?Rails URLジェネレータスイッチhttp/https

たとえば、FacebookのグラフAPIから画像を表示したいとします。だから、url_forはちょうど現在の要求のプロトコル上のプロトコルを拠点とすることを

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

:私は、私のような何かができる期待していました。

私はこの作品を知っているが、私は良い方法があります願っています:

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