我需要在页面顶部显示最新评论的帖子。每个帖子都有很多评论,很多评论属于一个帖子。
这是Posts控制器的索引方法
def index
@posts = Post.all.order("posts.created_at desc")
def new
@post = Post.new
end
end
我查看了Rails文档并找到了.order和.where方法,我认为这两种方法是我的问题的解决方案,但我不确定如何使用它
答案 0 :(得分:1)
def index
@posts = Post.all.order("created_at DESC")
@latest_post = @posts.first
end
<强>更新强>
我将单词评论解释为帖子。
更新2
首先,您需要找到最新评论:
@latest_comment = Comment.all.order('created_at DESC').first
有了这个,你可以提取这个评论所属的帖子的ID:
post_id = latest_comment.post_id
现在您有最新评论和相应帖子的ID。我会像这样修改索引页面:
def index
@posts = Post.all.order("created_at DESC")
@latest_comment = Comment.all.order('created_at DESC').first
@post_of_latest_comment = Post.find(@latest_comment.post_id)
end
我不确定将它显示在顶部是什么意思,但我很确定使用此代码可以在您的视图中执行此操作。
更新3 在你看来,你应该有这样的东西:
<h1>Top comment</h1>
<%= @latest_comment.text %>
按.text
我的意思是模型评论的一些属性,其中包含评论的内容,纯文本。如果您需要更多帮助,请显示您的Post和Coment模型的属性。
答案 1 :(得分:1)
试试这个:
@posts = Post.joins(:comments).order("comments.created_at DESC")
答案 2 :(得分:0)
我尝试了来自 Pitabas Prathal 的修改后的行
Post.joins(:comments).order("comments.created_at DESC").group('post_id')
其中post_id是Post模型中Comment模型中的外键。它对我来说很好用:))