例えば、グループなどに投稿された記事の詳細で「次へ」や「前へ」などのボタンを付けたかったのですが、若干悩んでしまったのでまとめておきたいと思います。
記事の一覧のコントローラをこんなに感じにします。
app/controllers/posts_controller.rb
class PostsController < ApplicationController
def index(group_id)
@group = Group.find(group_id)
@posts = @group.posts.order('published_at desc, id desc')
end
end
Postモデルにメソッドを追加します。
app/models/post.rb
class Interview < ActiveRecord::Base
belongs_to :group
def previous
group.posts.order('published_at desc, id desc').where('published_at <= ? and id < ?', published_at, id).first
end
def next
group.posts.order('published_at desc, id desc').where('published_at >= ? and id > ?', published, id).reverse.first
end
あとは、ビューでモデルのメソッドを呼びます。
<%= link_to '前へ', group_post(@group, @post.previous) if @post.previous %>
<%= link_to '次へ', group_post(@group, @post.next) if @post.next %>