Ruby on Railsでkaminariでページネーションを実装する方法
Railsチュートリアルにはページネーションにwill_paginate
を使っていたのですが、私はよく聞くkaminari
を使ってみたので、その使い方をまとめてみます。
ちなみにこの記事より公式ドキュメントの方が役に立ちます。。。
基本的な使い方
インストール
まず、Gemfile
に書きます。
gem 'kaminari'
あとはbundle install
するだけです。
$ bundle install
コントローラ
ページを表示するコントローラの部分で以下のように書きます。
def index
@users = User.page(params[:page])
# 1ページあたりの表示数を指定する場合
# @users = User.page(params[:page]).per(10)
end
ビュー
あとは当該ビューで以下のように表示させます。 簡単!
<%= paginate @users %>
応用
ビューのカスタマイズ
以下のコマンドでapp/views/kaminari/
以下にビューファイルが生成されるので、それをよしなに編集します。
$ rails g kaminari:views default
設定のカスタマイズ
以下のコマンドで、config/initializers/kaminari_config.rb
が生成されます。
$ rails g kaminari:config
この中は以下のようになっており、適宜編集します。
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
end
ローカライズ
config/locale/ja.yml
に、以下のようにしてラベルを変更できます。
もちろんRails自体のローカライズは設定済みの前提です。
ja:
views:
pagination:
first: "« First"
last: "Last »"
previous: "‹ Prev"
next: "Next ›"
truncate: "..."
おわりに
こんなに簡単にページングが実装できるなんて、便利な世の中になったものですね。。。