发布索引页面顶部的最新评论 - Ruby On Rails

时间:2016-05-22 14:12:18

标签: ruby-on-rails ruby

我需要在页面顶部显示最新评论的帖子。每个帖子都有很多评论,很多评论属于一个帖子。

这是Posts控制器的索引方法

def index
    @posts = Post.all.order("posts.created_at desc")
    def new
        @post = Post.new
    end
end

我查看了Rails文档并找到了.order和.where方法,我认为这两种方法是我的问题的解决方案,但我不确定如何使用它

3 个答案:

答案 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模型中的外键。它对我来说很好用:))