掲示板のページネーション
kaminariを導入し、1ページにつき掲示板を20個表示させたい
現在は全ての掲示板が、1ページに表示されています。
今後、掲示板の数が増えることを考え、見易いようにページネーションしていきます。
ページネーションとは、例えば、1ページにつき一度に20個だけ掲示板を表示するというものです。
kaminariの導入
kaminariはrailsにページネーション機能を実装できるgemです。
gem 'kaminari'
bundle install
します。
公式に沿って進めていきます。
% rails g kaminari:config
このコマンドで、ページネーション設定ファイルを生成し、編集していきます。
Kaminari.configure do |config| config.default_per_page = 20 #ここのコメントアウトを外して修正 # config.max_per_page = nil ・ ・ ・
設定用のコードがコメントアウトされた状態でファイルが生成されるので、設定したい箇所のコメントアウトを外します。
今回は、1ページ(per page)につき、20個の掲示板を表示させたいので、数字も修正します。
Controllers
page
というメソッドが使えるようになるので、適用させたいアクションに追記します。
def index @boards = Board.all.includes(%i[user bookmarks]).order(created_at: :desc).page(params[:page]) end
Views
適用させたいビューファイルに追記します。
私は、掲示板一覧画面の最下部に以下のコードを挿入しました。
paginate
ヘルパーを呼んでいます。※pagenateとタイポしてエラーになった。注意。
<%= paginate @boards %>
Bootstrapで形成する
綺麗なページネーションにするために、Bootstrapで実装していきます。
% rails g kaminari:views bootstrap4
このコマンドでBootstrapフレームワークを指定するだけで、自動的にスタイルが適用されます。
参考
【Rails】kaminariの使い方をマスターしよう! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト