プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

will_paginateによるページネーションの実装

Gemfileの編集

will_paginateとbootstrap-will_paginateをインストールします。

gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

例によってbundle installしておきます。

viewの編集

以下のように記載することで、will_paginateは、@usersオブジェクトを探し出してページネーションのリンクを生成します。 ただ、will_paginateで呼び出すオブジェクトはActiveRecord::Relationであることが求められるので、controller側にもそれ相応の書き方が存在します。

<%= will_paginate %>

<ul class="users">
  <% @users.each do |user| %>
    <li>
      <%= gravatar_for user, size: 52 %>
      <%= link_to user.name, user %>
    </li>
  <% end %>
</ul>

<%= will_paginate %>

controllerの編集

controller編集前に、paginateの出力例をrails consoleで確認します。

irb(main):001:0> User.paginate(page: 1).class
=> ActiveRecord::Relation

pageキーのハッシュ引数(この場合は1)を取ります。 指定されたひとかたまり(デフォルトで30)を探してきてpaginateは表示させます。

controllerはこのように書きます。 引数部分をparamsで書いてあげることができます。

 def index
    @users = User.paginate(page: params[:page])
  end