RoR: Отображение изображений активного хранилища в «каждой» итерации? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь показать фотографии профиля пользователя в oop твитах.

Мои модели

user.rb
has_many :tweets

tweet.rb
belongs_to :user, optional: true

Мое представление

<% @tweets.reverse.each do |tweet| %>
    <strong><%= link_to tweet.user.email, thisuser_path(tweet.user_id) %></strong>
    <br>
    <%= tweets_index_avatar(@image_tweet) %>

   ....

 <% end %>

Мой помощник

def tweets_index_avatar(image_tweet)
    if user.avatar.attached?
      image_tag user.avatar.variant(resize: "100x100!"), class: "rounded-circle"
      else
      image_tag 'default_avatar.jpg', height: 100, width: 100, class: "rounded-circle"
    end
  end

С этим (ожидаемым) ...

undefined local variable or method `user'

Я пробовал несколько комбинаций

def tweets_index_avatar(image_tweet)
    if tweet.user.avatar.attached?
      image_tag tweet.user.avatar.variant(resize: "100x100!"), class: "rounded-circle"
      else
      image_tag 'default_avatar.jpg', height: 100, width: 100, class: "rounded-circle"
    end
  end

Ошибка

undefined local variable or method `tweet' for 

Или ...

def tweets_index_avatar(image_tweet)
    if tweet.user_id.avatar.attached?
      image_tag tweet.user_id.avatar.variant(resize: "100x100!"), class: "rounded-circle"
      else
      image_tag 'default_avatar.jpg', height: 100, width: 100, class: "rounded-circle"
    end
  end

Тот же результат

Мои аватары работают нормально вне моей итерации, но как мне заставить их работать внутри моей «каждой» итерации? ты

1 Ответ

3 голосов
/ 06 августа 2020

Похоже, вы передаете неверный параметр (@image_tweet не определен) вспомогательному методу. Я предполагаю, что вы хотите сделать это следующим образом.

Мое мнение

  <% @tweets.reverse.each do |tweet| %>
    <strong><%= link_to tweet.user.email, thisuser_path(tweet.user_id) %></strong>
    <br>
    <%= tweets_index_avatar(tweet) %>

   ....

  <% end %>

Мой помощник

  def tweets_index_avatar(tweet)
    if tweet.user.avatar.attached?
      image_tag tweet.user.avatar.variant(resize: "100x100!"), class: "rounded-circle"
      else
      image_tag 'default_avatar.jpg', height: 100, width: 100, class: "rounded-circle"
    end
  end
...