Rails:显示除上一篇文章之外的所有帖子

时间:2016-07-22 13:27:47

标签: ruby-on-rails

我为我的最新帖子创建了一个部分,并为所有帖子创建了一个部分。但是,我上次创建的帖子会显示两次。

在我的控制器中,如何显示除上一篇文章以外的所有帖子?

MainController

 def index
        @post = Post.all.order('created_at DESC')
        @latest_post = Post.ordered.first
      end

2 个答案:

答案 0 :(得分:3)

你正在查询两次。相反,查询一次,并从结果集中拉出最新的帖子:

def index
  @posts = Post.all.order('created_at DESC').to_a
  @latest_post = @posts.pop
end

我不完全确定你在考虑“第一”记录的结果哪一方,所以如果@posts.pop似乎给你你认为的“最后”记录,那么使用@posts.shift从相反的一端删除记录。

答案 1 :(得分:1)

这不会在@latest_post

中提取@post
def index
  @latest_post = Post.ordered.first
  @post = Post.where.not(id: @latest_post.id).order('created_at DESC')
end

或者只是

def index
  @latest_post = Post.last
  @posts = Post.where.not(id: @latest_post.id).order('created_at DESC')
end