Сегодня при работе с изображениями у меня возникает проблема: когда изображение отсутствует или имеет недопустимый URL (404 или около того), мне нужно заменить его на asset_path("default_avatar.png")
.Поэтому я попытался:
def get_url_avatar url
return url if url.present? && Faraday.head(url).status == 200
asset_path "default_avatar.png"
end
Но затем я нашел другое решение - опция onerror
в image_tag
для решения проблемы на стороне клиента.Новый код:
<%= image_tag (user.avatar),
class: "avatar",
onerror: "this.src='asset_path("default_avatar.png")';" %>
или
<%= image_tag (user.avatar),
class: "avatar",
onerror: "this.src='<%= asset_path("default_avatar.png") %>';" %>
Теперь у меня новая проблема с image_tag
.Мне нужно получить значение asset_path("default_avatar.png")
в onerror
обработчик JavaScript.
Но я не могу написать ruby в обработчике onerror
.Как это сделать?