2008年10月22日水曜日

[Ruby on Rails] will_paginateの便利なViewヘルパー

will_paginateのエントリー([Ruby on Rails] ActiveRecord以外でwill_paginateを使う方法)を書くためにwill_paginateのソースを読んでみたら、使えそうなViewヘルパーがあったのでメモ。

will_paginate(collection = nil, options = {})

よく使うやつですね。
詳細ははぶきます。

参考リンク:
will_paginateに移行 - ひげろぐ


paginated_section(*args, &block)

will_paginateメソッドの親戚。パラメーターは共通です。

<% paginated_section @posts do %>
<ol id="posts">
<% for post in @posts %>
<li> ... </li>
<% end %>
</ol>
<% end %>

このように書くと...
<div class="pagination"> ... </div>
<ol id="posts">
...
</ol>
<div class="pagination"> ... </div>




page_entries_info(collection)
ページの情報を人間が見やすい形で整形してくれる。(残念ながら英語にしか対応していませんが)
<%= page_entries_info @posts %>
# #-> Displaying entries 6 - 10 of 26 in total

日本語にするならこんな感じでヘルパーを書く
application_helper.rb
def my_page_entries_info(collection)
if collection.total_pages < 2
case collection.size
when 0; 'エントリーは見つかりません'
when 1; '<b>1</b> 件のエントリーを表示しています'
else; "<b>#{collection.size}</b> 件のエントリーを表示しています"
end
else
%{<b>b</b>%d  〜  %d<b>/b</b> 件目 / <b>%d</b>件} % [
collection.offset + 1,
collection.offset + collection.length,
collection.total_entries
]
end
end

0 件のコメント: