有帖子,评论&用户。我想在帖子显示页面的评论列表中发布特定用户的评论数量。我知道我需要定义@user,但我不知道如何定义它,因此它显示每个用户的特定数字。用户是评论的作者。
发布控制器
def show
@post = Post.find(params[:id])
@comment = Comment.new
@comments = Post.find(params[:id]).comments.order(created_at: :desc)
@user = ???
end
发布/显示操作 - 错误适用于 - @ user.comments.count
<div class="row">
<% @comments.each do |comment| %><br>
<div class="col-sm-4"> <%= link_to comment.user.name, user_path(comment.user) %> <br>
<%= image_tag(comment.user.smallimage) %><%= @user.comments.count %>
</div>
<div class="col-sm-8"> <b><%= comment.title %>:</b>
<div>
<% if comment.content.length > 250 %>
<%= truncate(comment.content, length: 250) %>
<%= link_to_function '...Read more', "$(this).parent().html('#{escape_javascript comment.content}')" %>
<% else %>
<%= comment.content %>
<% end %>
</div>
</div>
<% end %>
</div>
答案 0 :(得分:2)
如果您定义@user
,则只有一个用户或一组用户与您的评论无关。你不需要它。你可以像这样使用用户和评论之间的关系:
<%= comment.user.comments.count %>
请注意,这将为每个注释运行数据库查询,以获取该用户的总注释计数。出于性能原因,您可能希望使用counter cache代替。
答案 1 :(得分:1)
如果您在帖子模型belongs_to :user
中定义了关联,那么您可以@user = @comment.user
但是,如果是这种情况,那么您可以使用@comment.user.name
或类似的方式从视图中调用它。
如果你推送到GitHub,我想看看整个代码库。