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