3

有没有办法在当前协议的基础上自动添加协议的外部资源链接?

例如,我想显示来自 Facebook 的 Graph API 的图像。我希望我可以做类似的事情:

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

这样url_for就可以将协议基于当前请求的协议。

我知道这行得通,但我希望有更好的方法:

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

1 回答 1

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.

于 2012-01-02T17:28:57.447 回答