読者です 読者をやめる 読者になる 読者になる

kaminariを使ってみた

Ruby Rails

Rails3からページネイトにはkaminariを使うのが
いいみたいなので、試してみました。
Railsでページネイト(モデルのページ分け)をするには
1.2の頃はRails謹製のpaginate、
2.xの頃はwill_paginateなどのプラグインを使うのが普通でした。
3.xになって、kaminariを使うのが一般的なわけです。
 
まず、Gemfileに

gem "kaminari"

を書いてから、bundle installして、
gemをインストールします。
 

def index
  @blogs = Blog.all

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @blogs }
  end
end

こんな感じで、allで一括呼び出ししている部分を

def index
  @blogs = Blog.page(params[:page])

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @blogs }
  end
end

とやります。
すると、ビューには25件区切りで表示されます。
25件を変更するには、

@blogs = Blog.page(params[:page]).per(15)

とやります。
ビューは

<%= paginate @blogs%>

と書いておくと、

の部分を作り出せます。
このラベルを変えたい時は、
config/locales/en.yml に

en:
  views:
    pagination:
      first: "&laquo; FIRST"
      last: "LAST &raquo;"
      previous: "&lsaquo; PREV"
      next: "NEXT &rsaquo;"
      truncate: "..."

と言った感じに書くと、変更されます。
will_paginateなどと違ってビューにレンダリング
するときにラベルの変更を渡すんじゃなくて、
localeで一括管理しているところがスマートですね。

全部大文字にしてみました。
 
使ってみた感じ、will_paginateよりも使いやすくなって
機能も増えていますね。