やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

will_paginateの1ページあたりの表示数とラベルを変更する

ページネーションをうまいことやりたいとき、railsだとどうやらkaminariってのが有名らしい。

しかしrailsチュートリアルで、will_paginateを使っていたので、それを活用していきます。

参考までにkaminari github.com

そして今回のwill_paginate github.com

余談ですけど、kaminariとかnokogiriとか4文字の日本語をローマ字にしましたみたいなgemってなんか良いですよね。
僕も将来onigiriってgem作りたいなと構想しています。

1ページに表示するitemの数を指定する

Post.paginate(:page => params[:page], :per_page => 30)

と、:per_page => 30のようにオプションを付ければできます。

まとめてdefaultの設定もできるようですが、部分ごとに表示させたい数が違ったので、今回は使いませんでした。

# for the Post model
class Post
  self.per_page = 10
end

# set per_page globally
WillPaginate.per_page = 10

labelを変更する

個別にも設定できるみたいなんですが、1ページあたりの表示数と違って、これはサイト全体で統一するパターンが多いと思うので、一括で設定をしたいところです。

config/application.rbにて

config.i18n.default_locale = :ja

で、日本語に設定して、config/locals/ja.yml

ja:
  will_paginate:
    previous_label: "前"
    next_label: "次"
    page_gap: "…"

を設定。