私の外部記憶装置

ただの覚え書きです。ちょこちょこ見直して加筆・修正していますが、間違ってるかも😅

【Rails, gem】kaminari

使い方

基本の書き方

# コントローラ
# データの末尾にpage(params[:page])を書くと、ページ毎のデータが渡される。
@reports = Report.hoge.page(params[:page])

# ビュー(slim形式)
= paginate @reports

※ちなみに引数はページ番号。例えば上の例でpage(1)と書くと1ページ目だけが渡される。直近のデータだけ渡したい場合などに使える。(ビューの= paginate @reportsは隠す)

表示数を変える方法

デフォルトの表示数(25個/ページ)を変えるには、以下の方法がある

# ①コントローラで変更:perメソッドを追記する。
# 例)10個/ページにする場合
@reports = Report.hoge.page(params[:page]).per(10)
# 例)101〜200個目のデータだけ取り出したい場合
@reports = Report.hoge.page(2).per(100)

# ②モデルで変更:
class Report < ApplicationRecord
  # ...
  paginates_per 10
  # ...
end

# ③設定ファイルで変更(Kaminari.configure メソッドで変更)
# 手順1)rails g kaminari:config を実行すると、kaminari_config.rb が config/initializers 内に生成される
# 手順2)生成されたファイルで、下記の設定値を変更。(必要あれば、設定値を読み込む操作を行う)

Kaminari.configure do |config|
  config.default_per_page = 10  # 表示数の設定。デフォルトは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.params_on_first_page = false
end

各種値を得る方法

Report.count                     #=> 今、1000とする
Report.page(1).limit_value       #=> 表示数(個/ページ)が得られる。今、25(デフォルト値)とする
Report.page(1).total_pages       #=> 40
Report.page(1).current_page      #=> 1
Report.page(1).next_page         #=> 2
Report.page(2).prev_page         #=> 1
Report.page(1).first_page?       #=> true
Report.page(40).last_page?       #=> true
Report.page(100).out_of_range?   #=> true

参考

kaminari/kaminari: ⚡ A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Ruby webapps
kaminari | RubyGems.org | コミュニティのgemホスティングサービス
Kaminariの使い方 まとめ - 猫Rails