2013-08-10 2 views
0

그래서 최근에 Devails를 Rails 3 앱에 설치했는데 이제 Devise 로그인 경로를 사용하여 로그인 할 때마다 다음 오류가 발생합니다. DevMethod/sessions #newMethodError 무기 호에 대한 정의되지 않은 메서드`line_items 'NilClassNo 메소드 오류 On Devise 로그인 시도

오류는 다음 줄에 묶여 : 이 이 <퍼센트 = @ cart.line_items.sum ("수량") %>

내가 상속 한 세션 컨트롤러를 작성하고 라우팅을 구성했습니다.

class Users::SessionsController < Devise::SessionsController 

def new 
@cart = current_cart 
@line_item = LineItem.new 
end 
end 

하지만이 문제에 영향을 미치지 않습니다. @ cart.line_items.sum ("수량") 줄을 제거 할 때마다 서명이 완벽하게 작동합니다. - 내가 <% = @ cart.line_items.sum ("양 이동 제가

+0

'current_cart' 변수에서 유래했습니다. 이것이 정의되는 곳은 어디입니까? 구조 액티브 :: RecordNotFound 카트 = Cart.create 세션 : – sircapsalot

+0

current_cart가 DEF Cart.find ([cart_id] 세션) current_cart 애플리케이션 컨트롤러 전용 방식으로 정의된다을 : cart_id = cart.id 카트 단부 – Renegade

+0

cart = Cart.create가 성공적으로 실행되고 실제 카트 개체를 반환하는지 확인 하시겠습니까? 실패하면 장바구니에 아무 것도 표시되지 않고 오류가보고되지 않습니다. – Bigxiang

답변

0

가 냈 도움을 이해할

def current_cart 
    Cart.find(session[:cart_id]) 
    rescue ActiveRecord::RecordNotFound 
    cart = Cart.create 
    session[:cart_id] = cart.id 
    cart 
    end 

:

current_cart은 애플리케이션 제어기 전용 방법으로 정의 ") %>를 카트 디렉토리에있는 부분으로 옮겨서 처리했습니다.

더 많은 연구를 한 결과, 호출하기 전에 < % @cart %>를 수행했다면 해결 된 것으로 나타났습니다. 이렇게하면 :