1. kaminariのインストール
ページネーションを導入するためにkaminariというgemをインストールする。
gem 'kaminari'
→ bundle install
Gemfileにkaminariと記入し、bundle installする。
(gemをインストールした後は一度サーバーを再起動しないとうまく読み込まれない。
Ctrl-cでサーバを止め、$ rails sでサーバーを起動する。)
2. ページネーションのデフォルトの設定ファイルを作成/編集
ターミナルにて、設定ファイルの作成コマンドを実施。
rails g kaminari:config
config/initializers/kaminari_config.rbを開くと、デフォルトでコメントアウトされた状態で入っているので、設定したいもののコメントアウトを外す。
# frozen_string_literal: true
Kaminari.configure do |config|
# config.default_per_page = 25
1ページあたりの表示件数(デフォルトは25レコード)
# config.max_per_page = nil
1ページあたりの最大表示件数(デフォルトはnil。つまり無限)
# config.window = 4
現在のページから、左右何ページ分のリンクを表示させるか(デフォルトは4件)
# config.outer_window = 0
最初(First)と最後(Last)のページから、左右何ページ分のリンクを表示させるか(デフォルトは0件)
# config.left = 0
最初(First)のページから、何ページ分のリンクを表示させるか(デフォルトは0件)
# config.right = 0
最終(Last)ページから、何ページ分のリンクを表示させるか(デフォルトは0件)
# config.page_method_name = :page
モデルに追加されるページ番号を指定するスコープの名前:page by default
# config.param_name = :page
ページ番号を渡すために使用するパラメータ名(デフォルトは:page)
↑Board.page(params[:page])のようにparamsメソッドで取得できる。
# config.max_pages = nil
最大ページ数
# config.params_on_first_page = false
最初のページでparamsを無視しない
end
3. コントローラーの編集
ページネーションを表示させたいところに.page(params[:page])を追加する。
def index
@posts = Post.all.includes(:user).order(created_at: :desc).page(params[:page])
end
4. viewの実装
ページネーションさせたいviewに下記を追記する。
<%= paginate @words %>
参考記事