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存在,因为它将检查nilempty

 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