我从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 %>
这一切都在升级之前完美运行,我重新检查了所有文档,看看上面的这些设置是否有任何改变。
答案 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