Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

[Rails5.2] will_paginateでページネーション

updated on 2019-07-26

イメージ

[Rails5.2] will_paginateでページネーション


環境


ruby 2.4.2
rails 5.2.1


Gemfile

gem 'will_paginate',           '3.1.6'
gem 'bootstrap-will_paginate', '1.0.0'

追加したら$ bundle installを実行します。


Controller

モデル名.paginateでページネーションを扱える

Hoge.where(id: [1,2,3]).paginateみたいに条件で絞り込んだデータにページネーションもできる

(articles_controller.rb)

def index
  @articles = Article.paginate(page: params[:page], per_page: 20) # デフォルトでは30件
end


View

以下の一行のコードを貼り付けるだけで、ページネーションが追加される

<div class="text-center">はbootstrapの中央寄せを行うラッパー

別になくても良い

(index.html.erb)

<div class="text-center">
  <%= will_paginate @articles %>
</div>


ラベルを日本語化

設定していないと、ラベルが英語表記

やり方A: 設定で日本語にする

config/application.rb

config.i18n.default_locale = :ja

config/locals/ja.yml

ja:
  will_paginate:
    previous_label: 前
    next_label: 次
    page_gap: …


やり方B: オプションを日本語で指定

<%= will_paginate @articles, :previous_label => ' < 前へ', :next_label => '次へ >', page_gap: '…' %>