ウェブサービスを作っています。

Kaminari で、最大ページ数を指定する

Kaminari v0.17.0 で確認しました。

ページングされすぎて、サーバに負担がかかる場合などに便利です。


config/initializers/kaminari.rb

Kaminari.configure do |config|
  config.max_pages = 100
end

これで、ページネーション用のリンクなどが 100 ページまでしか表示されなくなります。


page パラメータを手動で設定された場合の対策もしておきます。

app/controllers/application.rb

class ApplicationController < ActionController::Base
  before_action :normalize_page

  private
  def normalize_page
    page = params[:page].to_i
    params[:page] = (page <= 1 || page > Kaminari.config.max_pages) ? nil : page
  end
end