ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

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: "&laquo; First"
      last: "Last &raquo;"
      previous: "&lsaquo; Prev"
      next: "Next &rsaquo;"
      truncate: "..."

おわりに

こんなに簡単にページングが実装できるなんて、便利な世の中になったものですね。。。