查找模型中的下一条记录

时间:2017-11-30 02:22:30

标签: ruby-on-rails ruby

我有Post模型belongs_to Group模型。 Group - s可以有很多Post个。每个Post都有一个与之关联的数字(1-5),每个Group有五个帖子,编号为1-5。我想要一个上一个/下一个按钮来滚动Post中的每个Group

这是我到目前为止所做的:

post.rb

def next_post
  Post.where(group_id: group.id).find_each do |post|
    post.where("number > ?", number).first
  end
end

文章/ show.html.erb

<%= link_to "Next", group_post_path(@group, @post.next_post.first) %>

我收到错误undefined method 'where' for #<Post:0x007f8a7a8613c8>

不太清楚该怎么做

2 个答案:

答案 0 :(得分:2)

next_post可以是:

def next_post
  group.posts.where("number > ?", number).order(:number).first
end

和视图:

<%= link_to "Next", group_post_path(@group, @post.next_post) %>

答案 1 :(得分:0)

您还可以使用acts_as_list gem,它提供许多设施,包括您的要求。它非常方便,您可能需要检查帖子,如果它是最后一个或第一个,那么它们各自的上一个和下一个不应该出现,否则它将产生错误。