我试图展示在主题中发表评论的每个用户的头像。我几乎有一个主题模型和一个评论模型。在我的索引页面中,我有一个创建的所有主题的列表和评论的用户的头像列表,但它只获取第一个主题的列表,并重复图像。
这就是我在索引中所拥有的内容,但最终我会通过重复的图像获取每个评论的头像。
<tbody>
<% @topics.each do |topic| %>
<th class="topic"> <%= link_to topic.title, topic %> </th>
<th class="category"><%= topic.category.title %></th>
<th class="users"><%= image_tag topic.user.avatar.url(:thumb)%></th>
<th class="replies"><%= topic.comments.count %> </th>
<th class="replies"></th>
<th class="activities"></th>
<% @comment.each do |comment| %>
<%= image_tag comment.user.avatar.url(:thumb) %>
<% end %>
<% end %>
</tbody>
我的评论控制器
class CommentsController < ApplicationController
def index
@topics = Topic.all
@comments = Comment.includes(:user)
end
def create
@comment = @commentable.comments.new(comment_params)
@comment.user_id = current_user.id
@comment.save
redirect_to @commentable
end
private
def comment_params
params.require(:comment).permit(:body)
end
end
答案 0 :(得分:2)
您只显示一条评论的用户。
<% @comment.each do |comment| %>
您可能需要获取该主题的所有评论。见下文。
<% topic.comments.each do |comment| %>
要避免N+1
问题,您也可以急切加载评论
def index
@topics = Topic.includes(:comments => :user)
end
要显示唯一身份用户,您可以将Array#uniq与块一起使用。
假设注释表具有user_id
,作为外键,
<% topic.comments.uniq(&:user_id).each do |comment| %>