Почему я не могу включить Dynami c image_tag в HTML? - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь отобразить изображение в Rails с помощью image_tag, чтобы оно могло динамически меняться в зависимости от того, есть ли у пользователя аватар, привязанный к его учетной записи, но я продолжаю получать ошибку для <% if resource.avatar.attached?. В нем также указывается

"неопределенная локальная переменная или метод` resource 'для # <#: 0x0000561b852e6890> Вы имели в виду? Rescue "

Я не знаю, что является причиной этого, что я могу сделать, чтобы это исправить?

Ошибка

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

1 Ответ

3 голосов
/ 01 февраля 2020

Проблема в том, что 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...