DBの内容を複数ページに分けて表示する
- paginateメソッドを使えば、簡単にページ送りを実現できます。たとえば、テーブルの各レコードをページ送りで分割することを考えます。
- 次のように指定すると、entriesテーブルの各レコードを作成順(:order => "created_on")でページ送りすることになります(デフォルトでは、1ページあたり10件のレコードがロードされます)
@entry_pages, @entries = paginate(:entries, :order => "created_on")
- この場合、@entry_pagesにはページ送りの処理を担うPaginatorオブジェクトが、@entriesにはEntryオブジェクトの配列が格納されます。
- Paginatorオブジェクトは、現在のページ番号や全体のページ数などの情報を保持するものです。
- リクエストされたページ番号は、params[:page]クエリパラメータで指定されることになっています。そのため、ユーザリクエスト内にはparams[:page](URlの末尾に?page=n)というクエリパラメータが必要となります。
- 参考:『Rails レシピブック』p.112