【Rails】ページネーション(kaminari)
はじめに
ページネーションを実現させるgem(kaminari)の実装方法について書いていきます。
gemのインストール
まず、今回使用するgem kaminariをインストールしましょう。
Gemfile
gem 'kaminari'
gemのインストール
bundle install
基本的な使い方
コントローラー
def index @boards = Board.includes(:user).order(created_at: :desc).page(params[:page]) end
.page(params[:page)がpagenationのメソッドです。
pageメソッド
kaminariを導入すると、モデルクラスにpageメソッドが定義される。このメソッドは、ページネーションにおけるページ数を指定します。ビューのリクエストの際paramsの中にpageというキーが追加されて、その値がビューで指定したページ番号となる。よって、pageの引数はparams[:page]となります。
perメソッド
perメソッドもpageメソッドと同様、kaminariというgemをインストールすることで利用できるメソッド。1ページあたりに表示する件数を指定します。perメソッドに引数として渡した数字が、ページネーションが実装されたビューで1ページあたりに表示する件数になります。
ビュー
<!-- 掲示板一覧 --> <div class="row"> <div class="col-12"> <div class="row"> <% if @bookmark_boards.present? %> <%= render @bookmark_boards %> <% else %> <p><%= t('.no_result') %></p> <% end %> </div> <%= paginate @bookmark_boards %> #ここに入れる </div> </div> </div>
ビューの一覧表示のコードに1行加えるだけでpagenationが表示されます。下のようになります。これはbootstrap4を当てています。
下記のgenerateを実行するだけで、bootstrap4が当たります。
$rails g kaminari:views bootstrap4
基本設定について
デフォルトの構成ファイルをconfig / initializersディレクトリに生成する便利なジェネレーターがあります。
$ rails g kaminari:config
config/initializers
# frozen_string_literal: true Kaminari.configure do |config| # config.default_per_page = 25 # config.max_per_page = nil # config.window = 4 # config.outer_window = 0 # config.left = 0 # config.right = 0 # config.page_method_name = :page # config.param_name = :page # config.max_pages = nil # config.params_on_first_page = false end
ここの値の変更をするとkaminariのデフォルトの設定をすることができます。