Je souhaite afficher les avatars et les noms d'utilisateurs dans l'index Posts # (ci-après dénommé chronologie)
Présentation de la devise Introduction du stockage actif Ajouter un avatar au modèle des utilisateurs
Ajout de has_one_attached
et de la méthode d'instance utilisateur de: avatar
au modèle de publication
post.rb
class Post < ApplicationRecord
validates :content, {presence: true, length: {maximum: 140}}
validates :user_id, {presence: true}
has_one_attached :avatar
def user
return User.find_by(id: self.user_id)
end
end
Ajouter .user pour afficher
Ruby:index.html.erb
<% @posts.each do |post| %>
<div class="posts-index-item mb-20">
<div class="posts-index-user">
<!--avatar-->
<div class="posts-index-img d-inline">
<% if post.user.avatar.attached? %>
<%= image_tag post.user.avatar, class: "avatar-index rounded-circle mx-auto" %>
<% else %>
<img class="avatar-index rounded-circle mx-auto" src="<%= "/images/default_user.png " %>" alt="Userimage">
<% end %>
</div>
<!--username-->
<div class="posts-index-username d-inline">
<%= link_to post.user.username, users_show_path %>
</div>
</div>
<!--content-->
<%= link_to(post.content, "/posts/#{post.id}") %>
</div>
<% end %>
La méthode user peut gérer le modèle User même dans les posts # index où les paramètres ne peuvent pas être utilisés.
⇒ Vous pouvez gérer : avatar
lié au modèle utilisateur par post.user.avatar
Recommended Posts