【Ruby on Rails5】railsでページネーションを導入する
以下のように1ページに100ユーザーも表示されているのを
1ページ30ユーザーの表示にするため、
ページネーションを導入します。
Railsには豊富なページネーションメソッドが用意されています。
今回はその中で最もシンプルかつ堅牢なwill_paginateメソッドを使って
ページネーションを実現します!!
will_paginateを利用するには、
Gemfileにwill_paginate gem とbootstrap-will_paginate gemを両方含め、Bootstrapのページネーションスタイルを使ってwill_paginateを構成する必要があります。
では、gemfileに以下のように追加します。
gem 'will_paginate', '3.1.6' gem 'bootstrap-will_paginate', '1.0.0'
gemをインストール!!
$ bundle install
gemのインストールが完了しました。
まずはuser一覧のindex.html.erbに対して
ページネーションしたい箇所を指示する必要があります。
以下で該当箇所を囲えばOK
<%= will_paginate %>
こんな感じ
<h1>All users</h1> <%= will_paginate %> <ul class="users"> <% @users.each do |user| %> <li> <%= gravatar_for user, size: 50 %> <%= link_to user.name, user %> </li> <% end %> </ul> <%= will_paginate %>
あとはcontrollerのindexメソッドで
def index @users = User.all end
こうやって取得していた箇所を
def index @users = User.paginate(page: params[:page]) end
こうやってpagginateを利用するように修正します。
これで以下のようにページネーションが適用されます!
超簡単ですね!
ちなみにデフォルトは30件となっています。