2014-11-23 85 views
0

我从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 %> 

这一切都完美地工作在升级之前,我重新检查所有文件,看看是否有任何改变了对上述这些设置。

回答

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 

然后,我收到一个错误“未定义的方法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 
相关问题