Ruby on Rails的下一首/上一篇文章下一个元素对象
我有一个索引页 - 帖子#指数,具有链接到网页显示每个帖子。每个帖子引用特定主题并可能在不同时间创建,因此帖子的ID不一定是该主题中所有帖子的顺序。我希望能够去下一个&以前的帖子为特定的主题。
在我的PostsController我有实例变量,所有职位的主题和特定主题正在显示
def index
@topic = Topic.find(params[:topic_id])
@posts = @topic.posts.all
end
def show
@topic = Topic.find(params[:topic_id])
@posts = @topic.posts.all
@post = @topic.posts.find(params[:id])
end
@posts是活动记录对象的数组 @posts => #<ActiveRecord::AssociationRelation [ #<Post id: 73, topic_id: 3>, #<Post id: 74, topic_id: 3>, #<Post id: 76, topic_id: 3>, #<Post id: 77, topic_id: 3>, #<Post id: 91, topic_id: 3>]
如果这是我可以使用@posts.index(@post)
来查找数组中的特定元素的ID,然后执行index + 1
或index - 1
来遍历帖子数组,但.index
是活动记录中的一种不同方法。如果我在特定主题中的任何指定帖子的展示页面上,例如,Post id: 76
例如,如何以特定主题中的任何帖子适用的方式访问link_to Post id: 74
(下一个)和link_to Post id: 77
(上一个)?
感谢这是一个很好的简洁的解决方案,我需要什么。我最终改变了。首先让它们正确循环。 (@ post.id)。'first' to '@next_post = posts.where('posts.id>?',@ post.id)。@next_post = posts.where('posts.id>?',@ post.id)最后' –