图片标签选项中如何写ruby代码?
How to write ruby code in option of image tag?
今天在处理图像时,我遇到了一个问题:当图像不存在或无效时 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
但后来我找到了其他解决方案 - image_tag
中的 onerror
选项来处理客户端的问题。
新代码:
<%= 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
的新问题。我需要在 onerror
javascript 处理程序中获取 asset_path("default_avatar.png")
的值。
但是我不能在 onerror
处理程序中写 ruby 。怎么做?
在 erb 中,<%=
和 %>
之间的所有内容都是 ruby 代码,因此在此处使用 ruby 字符串插值:
<%= image_tag (user.avatar),
class: "avatar",
onerror: "this.src='#{asset_path("default_avatar.png")}';" %>
今天在处理图像时,我遇到了一个问题:当图像不存在或无效时 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
但后来我找到了其他解决方案 - image_tag
中的 onerror
选项来处理客户端的问题。
新代码:
<%= 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
的新问题。我需要在 onerror
javascript 处理程序中获取 asset_path("default_avatar.png")
的值。
但是我不能在 onerror
处理程序中写 ruby 。怎么做?
在 erb 中,<%=
和 %>
之间的所有内容都是 ruby 代码,因此在此处使用 ruby 字符串插值:
<%= image_tag (user.avatar),
class: "avatar",
onerror: "this.src='#{asset_path("default_avatar.png")}';" %>