Rails URL生成器切换http / https

时间:2012-01-02 17:13:26

标签: ruby-on-rails urlhelper

有没有办法放置外部资源的链接,根据当前协议自动添加协议?

例如,我想要显示来自Facebook的Graph API的图片。我希望我能做一些像:

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

这样url_for只是将协议建立在当前请求的协议上。

我知道这有效,但我希望有更好的方法:

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

1 个答案:

答案 0 :(得分: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来电。