🙆

ページネーションの最後のページが存在しなくて404エラーが出る

2023/04/18に公開

概要

pagyというGemを使ってページネーションを導入したまでは良かったのですが、
アプリの操作でレコードが削除され、ページネーションの存在しないページにアクセスすることで404になってしまいます。

エラー内容

404存在しないページ

解決法

難しく考える必要はなく、pagyにそのような想定の機能がありました!

Github/pagy

It raises Pagy::OverflowError exceptions that you can rescue from (see how...) or use the overflow extra for a few ready to use common behaviors
raises Pagy::OverflowError exceptions that you can rescue from (see how...) or use the overflow extra for a few ready to use common behaviors
It does not impose any difficult-to-override logic or output

DeepL翻訳

Pagy::OverflowError例外を発生させ、そこから救出することができます(方法を参照してください...)。
はPagy::OverflowError例外を発生させ、そこから救出することができます(方法を参照してください)。
オーバーライドが困難なロジックや出力を課すことはありません。

とのことで、ドキュメントのリンクもありました。
https://ddnexus.github.io/pagy/docs/how-to/#handle-pagyoverflowerror-exceptions
https://ddnexus.github.io/pagy/docs/extras/overflow/

色々と設定できるようですが、私の場合は「ページネーションが存在する最後のページにリダイレクト」したかったので、

config/initializers/pagy.rb

pagy
require 'pagy/extras/overflow'

Pagy::DEFAULT[:overflow] = :last_page

の設定で無事動作しました。

色々と検索して時間がかかってしまったのですが、
公式の一次情報をチェックするのは大事ですね。

Discussion