個人的勉強メモ置き場

プログラミングど素人のメモ置き場

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 %>を記述します

f:id:zykb:20211207162151p:plain
pagination


このままだと質素なので用意されているbootstrapのパーシャルテンプレートを生成します

rails g kaminari:views bootstrap4

すると以下のようにbootstrapデザインが適用されます。また、ほかのテンプレートに関してはrails g kaminari:viewsで一覧が表示されます
f:id:zykb:20211207163156p:plain


ここでエラーが出てテンプレートを作成できない場合はgemfileを以下のように変更します

gem 'kaminari', git: 'https://github.com/kaminari/kaminari'


以下参考
qiita.com
qiita.com
github.com