NoMethodError | undefined method `offset' for #<Array:***> | Pagy
NoMethodError | undefined method `offset' for #<Array:***> | Pagy
状況
Pagyというgemを利用してページネーションを行うコードにおいてpagyメソッドに関する標題のエラーが発生しました。該当のコードは次のような構成です。
items = Post.where(['content LIKE ?', "%#{keyword}%"]) results = [] results += items @pagy, @items = pagy(items)
原因
pagyの引数はActiveRecord::Relationクラスに属している必要があります。たとえばall
やwhere
の返り値のクラスがそれです。
今回のエラーは引数がStringの配列になっていたため発生していました。
解決策
引数をActiveRecord::Relationに変換します。
results.first.class.where(id: results.map(&:id))
一件落着!