0

最近、Rails 3 アプリに Devise をインストールしましたが、Devise サインイン パスを使用してサインインしようとすると、次のエラーが表示されます: NoMethodError in Devise/sessions#new undefined method `line_items' for nil:NilClass

エラーは次の行に関連付けられています: <%=@cart.line_items.sum("quantity")%>

Devise セッション コントローラーを継承し、ルーティングを構成しました

 class Users::SessionsController <  Devise::SessionsController

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

しかし、これは問題には影響しません。@cart.line_items.sum("quantity") 行を削除するたびに、サインオンは完全に正常に機能します。

current_cart は、アプリケーション コントローラーのプライベート メソッドとして定義されています。

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

どんな助けにも感謝します

4

1 に答える 1

0

それを理解しました-私は <%=@cart.line_items.sum("quantity")%> をカートディレクトリのパーシャルに移動し、それがそれを処理しました。

さらに調査を行ったところ、呼び出しの前に <% if @cart %> を実行していれば解決していたことがわかりました。このような:

于 2013-08-27T14:58:49.200 に答える