LoginSignup
3
0

More than 1 year has passed since last update.

Pagyのページネーションの件数をページごとに設定する

Last updated at Posted at 2021-06-11

image.png

はじめに

RailsのページネーションのGem、pagy
ページネーションだとkaminariが有名ですが、pagyはメモリの負担が少なくkaminariよりも高速で動きます。

ページネーションの表示件数を設定すると思うのですが、紹介している記事の多くはページごとにではなく、アプリケーション全体の設定として記述するやり方が多かったのでコントローラーのアクションごとに設定できる(つまり、ページごとに設定できる)やり方をご紹介します。

pagyの基本の設定方法

まずや基本的なPagyの設定方法。
config/initializers配下にpagy.rbを配置し、以下の記述を追加します。(追加したらサーバーの再起動必要

pagy.rb
Pagy::VARS[:items] = 30

この場合は、30件ずつの表示になります。ちなみにpagyのデフォルトは20件ずつです。

pagyの設定をそれぞれにする

ページネーションさせるのがひとつのページならいいのですが、ここは10件ずつでとやりたい場合ができず、
上記の例だと30件ずつになってしまいます。

なので、一覧ページは10件、管理画面は30件ずつなどと細かく設定したい場合はcontroller.rbにアクションごとに記述します。

controller.rb
def index
    @pagy, @users = pagy(User.all, items: 10)
end

def admin
    @pagy,@users = pagy(User.all, items: 30)
end

このようにitems :表示する数と記述すると、ページごとにページネーションさせる数を変えることができます。

ちなみにransackを使った時はこんな感じになるかと思います。

ransackの例
def index
    @q = User.ransack(params[:q])
    @pagy,@users = pagy(@q.result, items: 30)
end



それでは〜。

image.png

参考サイト

3
0
1

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
3
0