will_paginate の Collection クラスで使える属性

以前も書いたような気がするが、気にせずメモ。

will_paginate はページ表示するとき便利な Ruby gem である。

@users = User.paginate(:all, :page => params[:page], :per_page => 30, :order => "created_at DESC")

みたいな感じで、ActiveRecord::Base の find クラスメソッドとほぼ同様に使える・・・。page というパラメータを除いて。

ここでかえってきた @users は will_paginate の Collection クラスインスタンスで、ほぼ Array と同じ動きをするのだが、いくつか追加的な属性を使用可能である。

# collection.rb
 class Collection < Array
     attr_reader :current_page, :per_page, :total_entries, :total_page 
 ...

とあるので、ここらへんの属性が使えるようだ。

実際、たとえば総ページ数は次のように取得できる。

@users.total_page

カンタンだね。