首页 > 解决方案 > 为什么我不能在 HTML 中包含动态 image_tag?

问题描述

我正在尝试使用 image_tag 在 Rails 中显示图像,以便它可以根据用户是否将头像附加到他们的帐户而动态更改,但我不断收到 <% if resource.avatar.attached?. 它还指出

“#<#:0x0000561b852e6890> 的未定义局部变量或方法 `resource' 你的意思是?救援”

我不知道是什么原因造成的,我能做些什么来解决这个问题?

错误

<div>
  <% if resource.avatar.attached? %>
    <%= image_tag @user.avatar, class:"rounded-circle" %>
  <% else %>
    <%= image_tag("fallback/default-avatar.png", class:"rounded-circle") %>
  <% end %>
</div>

标签: ruby-on-rails

解决方案


问题是resource未定义。

只需更改resource@user

<div>
  <% if @user.avatar.attached? %>
    <%= image_tag @user.avatar, class:"rounded-circle" %>
  <% else %>
    <%= image_tag("fallback/default-avatar.png", class:"rounded-circle") %>
  <% end %>
</div>

但最好像这样制作助手:

module AvatarHelper
  def avatar(resource)
    if resource.avatar.attached?
      image_tag resource.avatar, class: "rounded-circle"
    else
      image_tag "fallback/default-avatar.png", class: "rounded-circle"
    end
  end
end

然后只需在您的视图中添加此代码:

<div><%= avatar(@user) %></div>

在标签中制作alt属性是一种很好的做法。img


推荐阅读