Rails不能在params上重复NilClass错误

kak*_*bei 4 ruby-on-rails-3.1

我在我的控制器中有这个:

@artists = Artist.where("artist LIKE ?", "%#{params[:term]}%").limit(500).paginate(params[:page]) 
Run Code Online (Sandbox Code Playgroud)

我收到了can't dup NilClass错误.

现在,params [:term]和params [:page]是两个不同的变量,为什么错误会出现呢?如果我删除第二个params变量,则错误消失.

即使我这样做,它仍然会出现:

page = params[:page]
Run Code Online (Sandbox Code Playgroud)

然后在下面:

paginate(page)
Run Code Online (Sandbox Code Playgroud)

我想了解为什么会发生这种情况以及如何解决它,如何在没有该错误的同一行中使用params()中的2个变量.

编辑

我发现用一个整数代替params [:page]会导致一个稍微不同的错误:can't dup FixNum所以问题可能不是params而是其他问题.但仍然不知道如何解决它.

kak*_*bei 14

我的错.我为此道歉,但我不恰当地使用了分页.我希望我能删除这个问题,但似乎没有办法.使用它的正确方法是:

paginate(:page => params[:page]
Run Code Online (Sandbox Code Playgroud)

我想这就是当你长时间盯着代码时会发生什么:)

也许它会帮助其他人与Paginate打交道.我非常喜欢它,但错误可能更具描述性.

例如,除非我这样做,否则我总是会得到一个未知的方法错误:

<%= will_paginate @artists if @artists.respond_to? :total_pages %>
Run Code Online (Sandbox Code Playgroud)