Programming Journal

学習したことの整理用です。

掲示板のページネーション

kaminariを導入し、1ページにつき掲示板を20個表示させたい

現在は全ての掲示板が、1ページに表示されています。

今後、掲示板の数が増えることを考え、見易いようにページネーションしていきます。

ページネーションとは、例えば、1ページにつき一度に20個だけ掲示板を表示するというものです。

f:id:Study-Diary:20200824095013p:plain
pagination

kaminariの導入

kaminariはrailsにページネーション機能を実装できるgemです。

gem 'kaminari'

bundle installします。

GitHub - kaminari/kaminari: ⚡ A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Ruby webapps

公式に沿って進めていきます。

% 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わかりやすいプログラミング用語サイト