write ahead log

ロールフォワード用

Rails5でwill_paginateを使う

ただの初心者メモ.

とりあえずプロジェクトを作る

$ 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 %>

とてもシンプルで良い.