Я использую 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-запроса перед обработкой изображений значков) и как справиться с описанным выше сценарием ?
2 ответа
Вот как реализовать идею, которую вы придумали в исходном вопросе.
Проблема с этим подходом будет заключаться в том, что время ответа будет включать время, необходимое другому домену для ответа на ваш запрос изображения. Если на этом сайте возникают проблемы, ваша страница не будет загружаться, пока не истечет время ожидания запроса.
<%
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
для удаленного изображения- в обратном вызове успеха замените src
<img>
на URL-адрес удаленного изображения - в обратном вызове ошибки замените src
<img>
на URL-адрес резервного изображения
- в обратном вызове успеха замените src
К сожалению, сейчас у меня нет времени сгенерировать для этого точный код.
Вы не можете сделать это с Rails, если не получите изображение на стороне сервера перед рендерингом страницы. Что вы можете сделать, так это загрузить его в клиенте с помощью JavaScript, а если возникнут проблемы с его получением, переключитесь на альтернативу.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.