今天使用图像时,我遇到了一个问题:当图像不存在或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")
JavaScript处理程序中获取onerror
的值。
但是我无法在onerror
处理程序中编写ruby。怎么做?
答案 0 :(得分:3)
在erb中,<%=
和%>
之间的所有内容都是红宝石代码,因此请在其中使用红宝石字符串插值:
<%= image_tag (user.avatar),
class: "avatar",
onerror: "this.src='#{asset_path("default_avatar.png")}';" %>