nil的未定义方法`paginate':NilClass

时间:2014-11-23 20:02:10

标签: ruby-on-rails-4 will-paginate

我从Rails 4.0升级到4.1.8并且我收到此错误"未定义的方法`paginate'为零:NilClass"我将我的will_paginate gem更新为3.0.7,将我的will_paginate-bootstrap gem更新为1.0.1错误位于我的pins_controller.rb文件的索引中。

require 'will_paginate/array'
  # GET /pins
  # GET /pins.json
  def index
    @pins = Pin.search(params[:search])
    @pins = @pins.paginate(:page => params[:page], :per_page => 50)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @pins }
      # format.js
    end
  end 

在我看来:

<%= will_paginate @collection, renderer: BootstrapPagination::Rails %>

这一切都在升级之前完美运行,我重新检查了所有文档,看看上面的这些设置是否有任何改变。

1 个答案:

答案 0 :(得分:0)

事实证明,我有两件事需要改变。主要问题是我两次分配@pins。我必须先将我的pins.rb中的搜索代码更改为:

def self.search(search)
    if search
      losearch = search.downcase
      where('lower(description) LIKE ? OR lower(artist) LIKE ? OR lower(album) LIKE ? OR lower(year) LIKE ?', "%#{search.downcase}%", "%#{search.downcase}%", "%#{search.downcase}%", "%#{search.to_s.downcase}%")
    end
  end 

然后我收到错误&#34;未定义的方法total_pages&#34;,所以我将pins_controller.rb更改为:

def index
    if params[:search]
      @pins = Pin.search(params[:search]).paginate(:page => params[:page], :per_page => 50)
    else  
      @pins = Pin.paginate(:page => params[:page], :per_page => 50)
    end  
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @pins }
      # format.js
    end
  end