有没有办法放置外部资源的链接,根据当前协议自动添加协议?
例如,我想要显示来自Facebook的Graph API的图片。我希望我能做一些像:
image_tag url_for("/1234567/picture", :host => "graph.facebook.com")
这样url_for
只是将协议建立在当前请求的协议上。
我知道这有效,但我希望有更好的方法:
image_tag("#{request.protocol}://graph.facebook.com/1234567/picture")
答案 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
来电。