Rails6でページネーションの導入
kaminariのインストール
ページネーションを導入したのでメモ。
will_paginate gem などもありますが今回はkaminariを使います
gem 'kaminari'
の行を追加してbundle install
ページネーションの設定
def index @articles = Article.all.page(params[:page]).per(3) end
表示させたいデータに.page(params[:page])を記述
デフォルトでは25件が表示されるとのことですが、ページネーションを表示させるためにはそれ以上のデータを用意する必要があるので
.per(3)で1ページに表示するレコードを3件までとしました。
他にもモデルに直接記述したり
class Article < ApplicationRecord has_rich_text :content paginates_per 3 end
設定ファイルを作成して記述することも出来ます
rails g kaminari:config
# frozen_string_literal: true Kaminari.configure do |config| # デフォルトではコメントアウトされている config.default_per_page = 3 # 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
ページネーションの表示
表示する場合にはviewに<%= paginate @articles %>を記述します
このままだと質素なので用意されているbootstrapのパーシャルテンプレートを生成します
rails g kaminari:views bootstrap4
すると以下のようにbootstrapデザインが適用されます。また、ほかのテンプレートに関してはrails g kaminari:viewsで一覧が表示されます
ここでエラーが出てテンプレートを作成できない場合はgemfileを以下のように変更します
gem 'kaminari', git: 'https://github.com/kaminari/kaminari'
以下参考
qiita.com
qiita.com
github.com