1、gem kaminariをインストール
gem 'kaminari'
としbundle installで完了。
2、デフォルトの設定をいじる
rails g kaminari:config
コマンドでページネーションの設定を書き込むファイルを作成。
kaminari_config.rb
# frozen_string_literal: true
Kaminari.configure do |config|
# config.default_per_page = 25
# config.max_per_page = nil
# config.window = 4
# config.outer_window = 0
# config.left = 0
# config.right = 0
# config.page_method_name = :page
# config.param_name = :page
# config.max_pages = nil
# config.params_on_first_page = false
end
上記がデフォルトである。1ページあたりのコンテンツの数等の設定を変更できる。
モデルごとに設定することもできる
user.rb
class User < ActiveRecord::Base
paginates_per 50
end
モデルにpaginates_perメソッドを利用して設定する。
3、ページネーションのビューファイルを作成する
以下のコマンドで終結する。
rails g kaminari:views default
ページネーションのビューにbootstrapなどのフレームワークを適用させたい場合は上記コマンドのdfaultの部分を変更すれば良い。
rails g kaminari:views bootstrap4
これで完結する。
4、コントローラーに必要な処理を書く
boards_controller.rb
def index
@boards = Board.page(params[:page]).per(20).includes(:user)
end
pageメソッドを使うことでrailsがページネーションしてくれる。
この時にpageメソッドに必ずparams[:page]を引き渡す必要がある。
perメソッドは「2、デフォルトの設定をいじる」で行った設定に沿う場合は使う必要はない。
5、ビューに出力
boards_controller.erbで定義したインスタンス変数を引数に取り、ページネーションして出力してくれる。
index.html.erb
<%= paginate @boards %>
以上で完成。
参考にしたURL