我正在使用Ruby on Rails v3.0.9,我想检查是否从网络上成功检索到了一个图像(在我的情况下是一个favicon.ico
图标图像)网站,如果不是我想显示自定义图像。
为了检索与网站相关的favicon.ico
图像,我在我的视图文件中有:
image_tag "#{web_site.link}/favicon.ico", :size => "16x16"
其中web_site.link
值类似于以下内容:
http://stackoverflow.com/
http://www.stackoverflow.com/
http://facebook.com/
...
如何检查网站上是否找到图像(可能使用if ... else ... end
语句或在处理图标之前执行某些HTTP请求以及如何处理以上情况?
答案 0 :(得分:6)
以下是如何实现原始问题中的想法。
此方法的问题在于,您的响应时间将包括其他域响应您的图像请求所需的时间。如果该网站有 问题,然后你的页面不会加载,直到请求超时。
<%
img_url = 'http://adomain.com/image.jpg'
res = Net::HTTP.get_response(URI.parse(img_url))
img_url = '[my alternate url]' unless res.code.to_i >= 200 && res.code.to_i < 400 #good codes will be betweem 200 - 399
%>
<%=image_tag img_url%>
jQuery方法涉及更多。我建议以下内容:
<img>
标记
页面的javascript中的$.ajax
调用
<img>
的src <img>
的src 不幸的是,我现在没有时间为此生成确切的代码。
答案 1 :(得分:-1)
除非在呈现页面之前获取图像服务器端,否则无法使用Rails执行此操作。您可以做的是使用JavaScript在客户端中获取它,如果在检索它时遇到问题,那么请切换到替代方案。