nil:NilClass 的未定义方法"注释" - 特定用户的列表



有帖子,评论和用户。我想在帖子显示页面上的评论列表中发布特定用户的评论数量。我知道我需要定义@user,但我不知道如何定义它,以便它为每个用户显示特定的数字。用户是评论的作者。

后控制器

def show
  @post = Post.find(params[:id])
  @comment = Comment.new
  @comments = Post.find(params[:id]).comments.order(created_at: :desc)
  @user = ???
end

发布/显示操作 - 错误适用于 - @user.评论.计数

<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>

如果您定义@user则只有一个用户或一组与您的评论无关的用户。你不需要它。你可以像这样使用用户和注释之间的关系:

<%= comment.user.comments.count %>

请注意,这将为每个注释运行数据库查询,以获取该用户的总注释计数。出于性能原因,您可能希望为此使用计数器缓存。

如果您在后期模型belongs_to :user中定义了关联,那么您可能可以执行@user = @comment.user

但是,如果是这种情况,那么您可以从带有@comment.user.name或类似内容的视图中调用它。

如果您已推送到 GitHub,我想查看整个代码库。

最新更新