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 ページネーションの実装

Posted at

1、gem kaminariをインストール

gem 'kaminari'

としbundle installで完了。

2、デフォルトの設定をいじる

rails g kaminari:config

コマンドでページネーションの設定を書き込むファイルを作成。

kaminari_config.rb
# 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

上記がデフォルトである。1ページあたりのコンテンツの数等の設定を変更できる。

モデルごとに設定することもできる
user.rb
class User < ActiveRecord::Base
  paginates_per 50
end

モデルにpaginates_perメソッドを利用して設定する。

3、ページネーションのビューファイルを作成する

以下のコマンドで終結する。

rails g kaminari:views default

ページネーションのビューにbootstrapなどのフレームワークを適用させたい場合は上記コマンドのdfaultの部分を変更すれば良い。

rails g kaminari:views bootstrap4

これで完結する。

4、コントローラーに必要な処理を書く

boards_controller.rb
def index
  @boards = Board.page(params[:page]).per(20).includes(:user)
end

pageメソッドを使うことでrailsがページネーションしてくれる。
この時にpageメソッドに必ずparams[:page]を引き渡す必要がある。
perメソッドは「2、デフォルトの設定をいじる」で行った設定に沿う場合は使う必要はない。

5、ビューに出力

boards_controller.erbで定義したインスタンス変数を引数に取り、ページネーションして出力してくれる。

index.html.erb
<%= paginate @boards %>

以上で完成。

参考にしたURL

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?