ただの初心者メモ.
とりあえずプロジェクトを作る
$ rails new pagination
Gemを導入する
Gemfileに以下を追記.
gem 'will_paginate'
いつも通りbundleで更新する.
$ bundle install
サンプルページの用意
とりあえずScaffoldで準備しておく
$ rails g scaffold user name:string email:string $ rails db:migrate
テストデータを用意
fixtureで適当に量産する.
#test/fixtures/users.yml <% 1000.times do |n| %> user_<%= n %>: name: <%= "user_#{n}" %> email: <%= "user_#{n}@example.com" %> <% end %>
$rails db:fixtures:load
コントローラを変更
paginateメソッド経由でインスタンスを得るようにしてやる.
何ページ目にいるかはpageパラメータに入っている.
def index @users = User.all.paginate(page: params[:page]) end
ページ単位の表示数も指定してやれる.
def index @users = User.all.paginate(page: params[:page], per_page: 20) end
ビューを変更
ページネーションを出したい所へ以下を入れてやるだけ.
<%= will_paginate @users %>
とてもシンプルで良い.