kaminari undefined method’page’
我想将Kaminari添加到我的Rails应用程序中。 我已经包含了gem,这就是我的控制器的样子:
def index if params[:year] if params[:year].size > 0 @songs = Song.where("year like ?", params[:year]).page(params[:page]) elsif params[:artist].size > 0 @songs = Song.where("artist_name like ?", params[:artist]).page(params[:page]) elsif params[:song].size > 0 @songs = Song.where("title like ?", params[:song]).page(params[:page]) end else @songs = Song.first(10).page(params[:page]) end end
然后添加
在我看来,我得到的错误是:
undefined method `page' for #
不知道为什么会出现这种情况,因为我按照文档步骤进行操作。
Kaminari使用paginate_array
对数组进行分页。 2解决方案:
首先,您可以使用limit(10)
而不是first(10)
:
@songs = Song.limit(10).page(params[:page])
其次,使用paginate_array
@songs = Kaminari.paginate_array(Song.first(10)).page(params[:page])
我建议你稍微改写你的控制器。 更好的是,将filter移动到模型或filter类。 看看present?
用于测试params
存在,因为它将检查nil
和empty
。
def index @songs = Song @songs = @songs.where("year like ?", params[:year]) if params[:year] @songs = @songs.where("artist_name like ?", params[:artist]) if params[:artist] @songs = @songs.where("title like ?", params[:song]) if params[:song] @songs = @songs.limit(10).page(params[:page]) end