Rails2.0でPaginateを使う
Rails2.0からPaginateが標準搭載されていません。ということで、pluginを導入してpaginationします。
Rails1.2と同様の物はclassic_paginationとしてplugin化されていますが、今回はwill_paginateを使います。
classicはこれからメンテされないとか、willの方が使いやすい気がするので、こちらがオススメです。
動作例は以下をご覧下さい。
http://nico.n-labo.net/video/view_m_per
インストール
% sudo gem install will_paginate
svn://errtheblog.com/svn/plugins/will_paginat から移動した模様。
config/environment.rb に以下を追加します。
require 'will_paginate'
コントローラの設定
モデルからデータを取得します。
@page = Hoge.paginate(:page => params[:page], :per_page => 10, :conditions => ['delflg = false'], :order => 'updated_at DESC')
SQLで制御することもできます。
@page = Hoge.paginate_by_sql('SELECT * FROM hoges WHERE delflg = false ORDER BY updated_at DESC', :page => params[:page], :per_page => 10)
ビューの設定
@pageから普通にHogeモデルのデータが取得できます。
ページナビゲーションは以下を埋め込んでください。
<%= will_paginate @page %>
取得件数を表示したい場合は以下を埋め込みます。
<%=@page.total_entries %>
スタイルシート
READMEに付いてたオススメ設定。
.pagination { padding: 3px; margin: 3px; } .pagination a { padding: 2px 5px 2px 5px; margin: 2px; border: 1px solid #aaaadd; text-decoration: none; color: #000099; } .pagination a:hover, .pagination a:active { border: 1px solid #000099; color: #000; } .pagination span.current { padding: 2px 5px 2px 5px; margin: 2px; border: 1px solid #000099; font-weight: bold; background-color: #000099; color: #FFF; } .pagination span.disabled { padding: 2px 5px 2px 5px; margin: 2px; border: 1px solid #eee; color: #ddd; }