0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】kaminariを使ってページネーションする

Last updated at Posted at 2023-07-05

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 %>

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?