使い方
基本の書き方
# コントローラ # データの末尾に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