はじめに
gem kaminariについて、新しい発見があったので、記録として残す。
今回のエラー
インスタンス変数 = オブジェクト.page(:params[:page]).per(10)
= paginate インスタンス変数
と定義したところ、エラーが出た。
エラー文
undefined method 'page' for # <Array:0x000........>
なぜ???
実は、、、
私の解釈では、、
インスタンス変数 = オブジェクト.page(:params[:page]).per(10)
のつもりだったのが、
インスタンス変数 = 配列.page(:params[:page]).per(10)
の間違いだった。
解決策
kaminariの公式ページを読めばわかるのだが、
通常.pageメソッドはActive Recordのオブジェクトにしか適用されないらしい。
今回はそうではなく、配列(Array)だったのでエラーが出ていたようだ。
そこでkaminariでは、配列にも.pageメソッドを使用できるやり方がある。
インスタンス変数 = Kaminari.paginate_array(配列).page(params[:page]).per(10)
これで解決した。
おわりに
あまり深く理解せず使用していたジェムがたくさんあるが、こういうエラーがきっかけで、
改めて公式レファレンスを読むことの重要性を感じた。
公式レファレンスを読み進めていくと、新しい発見もたくさんあるので非常に楽しいので、皆さんもいろんなgemの公式レファレンスを読んでみてほしい。
参考記事
公式レファレンス
https://github.com/kaminari/kaminari/blob/master/README.md
kaminariでundefined method `page' for #<Array:0x000xxxxxxと出た
https://haayaaa.hatenablog.com/entry/2019/03/11/215042