はじめに
RailsのページネーションのGem、pagy
。
ページネーションだと**kaminari
**が有名ですが、pagy
はメモリの負担が少なくkaminari
よりも高速で動きます。
ページネーションの表示件数を設定すると思うのですが、紹介している記事の多くはページごとにではなく、アプリケーション全体の設定として記述するやり方が多かったのでコントローラーのアクションごとに設定できる(つまり、ページごとに設定できる)やり方をご紹介します。
pagyの基本の設定方法
まずや基本的なPagyの設定方法。
config/initializers
配下にpagy.rb
を配置し、以下の記述を追加します。(追加したらサーバーの再起動必要)
Pagy::VARS[:items] = 30
この場合は、30件ずつの表示になります。ちなみにpagyのデフォルトは20件ずつです。
pagyの設定をそれぞれにする
ページネーションさせるのがひとつのページならいいのですが、ここは10件ずつでとやりたい場合ができず、
上記の例だと30件ずつになってしまいます。
なので、一覧ページは10件、管理画面は30件ずつなどと細かく設定したい場合は**controller.rb
**にアクションごとに記述します。
def index
@pagy, @users = pagy(User.all, items: 10)
end
def admin
@pagy,@users = pagy(User.all, items: 30)
end
このように**items :表示する数
**と記述すると、ページごとにページネーションさせる数を変えることができます。
ちなみにransack
を使った時はこんな感じになるかと思います。
def index
@q = User.ransack(params[:q])
@pagy,@users = pagy(@q.result, items: 30)
end
それでは〜。
参考サイト