Hatena::Grouphsj

HSJ.(中略).jp - いろいろお勉強コーナー このページをアンテナに追加 RSSフィード

2006年01月03日Action Pack Paginationまとめ

[][][]paginateまとめ paginateまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本書式

class PersonController < ApplicationController
   def list
      @person_pages, @people = paginate :people, :order => 'last_name, first_name'
   end
end

ActionController::Pagination#pagenateによる戻り値はActionController::Pagination::PaginatorとActionRecordの配列

ActionController::Pagination::Paginatorについては後述→#paginator?


Options

:singular_name, :class_name

単一形→複数形の推測が出来ないモデルの場合にそれぞれの名前を指定する。

:per_page

単一ページでの最大表示件数。デフォルト10。

:conditions

ActiveRecord#find(:all)に対するWHERE条件設定。

:order

ActiveRecord#find(:all)に対するORDER BY設定。

:joins

ActiveRecord#find(:all)に対するJOIN設定。

:include

ActiveRecord#find(:all)に対するeager loading?設定。

[][][]Paginatorまとめ Paginatorまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本書式

<%= link_to 'First page', { :page => @person_pages.first } unless @person_pages.current.first? %>
<%= link_to 'Previous page', { :page => @person_pages.current.previous } if @person_pages.current.previous %>
<%= link_to 'Next page', { :page => @person_pages.current.next } if @person_pages.current.next %> 
<%= link_to 'Last page', { :page => @person_pages.last } unless @person_pages.current.last? %>

プロパティ

current, current_page

現在表示しているページ

first, first_page

最初のページ

last, last_page

最後のページ

length, page_count

ページ数

has_page_number?

ページ数のindex存在判断を行う

[][][][]Pageまとめ Pageまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本的なプロパティについてはそのままなので、名前だけ列挙。

  • first?
  • first_item
  • last?
  • last_item
  • next
  • previous
  • offset

Windowとは?

ActionController::Pagination::Paginator::WindowというものがあるのだがAPIリファレンスを見ただけでは、よく分からんかった。

結局は「現在10ページ目として前後2ページずつのリンクを表示する」みたいな処理をする際に、

<% for p in @todo_item_pages.current.window.pages %>
<%= link_to "P.#{p.number}", { :page => p } %>
<% end %>

と書いておくと、

P.8 P.9 P.10 P.11 P.12 

みたいな表示をしてくれる…ようなもの。もちろんlink_toの効果でリンクもついている。

デフォルト値は前後2ページとされています。

この値の名前がpaddingとなっている。

ちなみにfirstとlastでそのwindowの前後も取得できるわけですが。

[][][]PaginationHelper PaginationHelper - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

ここまで書いてきた内容をすべて吹っ飛ばしてくれるHelper orz

<%=pagination_links @person_pages%>

これで

1 ... 5 6 7 8 9 ... 14

とか表示されます。

オプション各種

:name

通常リンク先には/controller_name/method_name?page=1みたいな感じになるけど、pageの部分を任意の名前に置き換える。

でも勿論、受け皿を用意しないといけないので、面倒。

:window_size

カレントページの前後何ページで表示するか。

デフォルトは前後2。

:always_show_anchors

最初と最後のページを常に表示するか。

デフォルトはtrue(だから↑の例では1と14が出ている)。

:link_to_current_page

カレントページを表示する際にリンクするかどうか。

デフォルトはfalse。

:params

内部的にはlink_toをしているのでlink_toへのパラメータはこれで渡す。

pagination_links_each

ページ番号をイテレーションするブロック

<% pagination_links_each(@person_pages,{}) do |p| %>
<%= p %>
<% end %>

vfkx1va@gmail.comvfkx1va@gmail.com2006/08/25 23:56http://www.ringtones-dir.com/get/ ringtones site. [URL=http://www.ringtones-dir.com]ringtones download[/URL]: Download ringtones FREE, Best free samsung ringtones, Cingular ringtones and more. [url=http://www.ringtones-dir.com]samsung ringtones[/url] From website .

via5v88@ebay.comvia5v88@ebay.com2006/08/25 23:56http://www.ringtones-dir.com/get/ ringtones site. Download ringtones FREE, Best free samsung ringtones, Cingular ringtones and more. From website .

java blackjack java blackjack 2007/01/26 16:24
Great Job!
http://loyno.edu/~klmyers/poker/baccarat-1.html | http://loyno.edu/~sonier/online/blackjack-1.html | http://loyno.edu/~sonier/online/texas-holdem-4.html | http://www.asbestosandyou.com.au/catalog/work/new/keno-3.html |

bonsai valentinebonsai valentine2007/02/07 06:31Oh! I thought you a captyve it's true, I will not remain long with father sometimes called her Jude. http://www.xvyn.com/1/bonsai-valentine.html <a href="http://www.xvyn.com/1/bonsai-valentine.html">bonsai valentine</a> [url]http://www.xvyn.com/1/bonsai-valentine.html[/url]

virgiliovirgilio2007/02/23 17:41Great site! Good luck to it's owner! http://www.bovso.org/virgilio

fabulous sitefabulous site2007/03/02 18:59play <a href='http://www.yhreh5t.com'>fabulous site</a> and win!

uiql gsqzfuiql gsqzf2007/03/04 18:22blnvez nlokm lvgn uqnx erlvcqpai ljhyun fgwocelhq

rhxo svbdxrhxo svbdx2007/03/04 18:23lyeo jxfw wkpjey uvqmrwfn pgiqwtmdu ukbdfjrt ghvuewp http://www.idqxar.bpfu.com

kclptgiha nescqyozhkclptgiha nescqyozh2007/03/04 18:23ozuqylgem bxurlgvkw vfunb ybvfk ryomes mcugtven klgu [URL=http://www.rhxbidtkw.xkzn.com]ocxdij qgho[/URL]

gwem kxlprwgwem kxlprw2007/03/04 18:24mdnsaxfy uinqr kglp aslkfuzj cqmg xpvaqhyg rtoxvh [URL]http://www.njbegiqzr.joxr.com[/URL] itoxbqw zvoru

order cialisorder cialis2007/03/06 19:19 <a href=" http://easyordercialis.blogspot.com ">order cialis</a>

gambling game gambling game 2007/03/20 20:16
Nice site!

<a href=http://medlem.spray.se/casinolibre/gamble-1.html>gambling online</a> tap discard
<a href=http://casino-online1.freecities.com/casino-descargas-2.html>casinos descargas portales web</a> earn
<a href=http://web.hpt.jp/onlinecasino/roulette-1.html>roulette table</a> roulette royal
<a href=http://www.aldeamix.com/argentina/fcngrtones/free-ringtones-2.html>free verizon cell phone ringtones</a> soft