2014-11-23 2 views
0

Rails 4.0에서 4.1.8로 업그레이드 할 때 "undefined method`paginate'for nil이 발생했습니다 : NilClass"3.0.7에 will_paginate gem을 업데이트했습니다. 및 will_paginate-bootstrap gem을 1.0.1로 설정하십시오. 오류가 내 pins_controller.rb 파일의 색인에 있습니다. 정의되지 않은 메쏘드`paginate 'for nil : 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 
관련 문제