Ruby on rails 显示属于帖子的最后5条评论

Ruby on rails 显示属于帖子的最后5条评论,ruby-on-rails,Ruby On Rails,我有两个模型,帖子和评论,我试图展示最后5个评论标题 <%= Post.limit(5).order('created_at desc') %> 给我最后5个帖子 如何获得最后5条评论和标题?我想您正在寻找: Comment.select(:title).order('created_at desc').limit(5).map {|c| c.title} 这将为您提供最近创建的5条注释的标题数组。如果您需要其他属性,可以将它们添加到名为(Comment.select([:t

我有两个模型,帖子和评论,我试图展示最后5个评论标题

<%= Post.limit(5).order('created_at desc') %>

给我最后5个帖子


如何获得最后5条评论和标题?

我想您正在寻找:

Comment.select(:title).order('created_at desc').limit(5).map {|c| c.title}

这将为您提供最近创建的5条注释的标题数组。如果您需要其他属性,可以将它们添加到名为(
Comment.select([:title,:owner])
)的select方法中,或者删除select和fetch all Comment属性。

要仅获取最后5条注释,可以使用此选项

Comment.limit(5).order('created_at desc').select(:title)
显示文章的标题,看起来您想要检索文章的最后5条评论

你可以这样做:

<% Post.limit(5).order('created_at desc').each do |post| %>
  <% post.comments.select(:title).order('created_at desc').limit(5).each do |comment| %>
    <%= comment.title %>
  <% end %>
<% end %>

有两个问题:

  • 您直接从视图访问模型。你应该从一开始就做 控制器
  • 存在N+1问题。你可以通过

注意:我无法测试这些,但我想它们会起作用,或者至少会给你一个想法

我现在意识到,返回所有帖子的最后5条评论。知道如何将其限制为一篇文章吗?@user2759575是的,试试
@post.comments.select(:title.order('created_at desc')。limit(5)。map{c | c.title}
。此外,正如HungryCoder所说,您可能应该将其加载到控制器中,而不是将其分配给一个实例变量。它只是将查询和显示问题分离了一点。