LoginSignup
31
16

More than 3 years have passed since last update.

undefined method 'page' for # <Array:0x000........>が出たときの対処法

Posted at

はじめに

gem kaminariについて、新しい発見があったので、記録として残す。

今回のエラー

controller.rb
インスタンス変数 = オブジェクト.page(:params[:page]).per(10)
index.html.haml
= paginate インスタンス変数

と定義したところ、エラーが出た。

エラー文

undefined method 'page' for # <Array:0x000........>

なぜ???

実は、、、

私の解釈では、、

controller.rb
インスタンス変数 = オブジェクト.page(:params[:page]).per(10)

のつもりだったのが、

controller.rb
インスタンス変数 = 配列.page(:params[:page]).per(10)

の間違いだった。

解決策

kaminariの公式ページを読めばわかるのだが、

通常.pageメソッドはActive Recordのオブジェクトにしか適用されないらしい。

今回はそうではなく、配列(Array)だったのでエラーが出ていたようだ。

そこでkaminariでは、配列にも.pageメソッドを使用できるやり方がある。

controller.rb
インスタンス変数 = 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

31
16
0

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
31
16