未定义的方法'paginate'为零:NilClass
问题描述:
我从Rails 4.0升级到4.1.8,我得到这个错误“未定义的方法`分页'的零:NilClass”我更新了我的will_paginate gem到3.0.7和我的will_paginate-bootstrap gem到1.0.1这个错误在我的pins_controller.rb文件的索引中。未定义的方法'paginate'为零:NilClass
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 %>
这一切都完美地工作在升级之前,我重新检查所有文件,看看是否有任何改变了对上述这些设置。
答
事实证明,我有两件事情需要改变。主要问题是我分配了@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
然后,我收到一个错误“未定义的方法TOTAL_PAGES”,所以我改变了我的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