0

所以我最近在我的 Rails 3 应用程序中安装了 Devise,现在每当我尝试使用 Devise 登录路径登录时,我都会收到以下错误: NoMethodError in Devise/sessions#new undefined method `line_items' for nil:NilClass

该错误与以下几行有关: <%=@cart.line_items.sum("quantity")%>

我继承了设计会话控制器并配置了路由

 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 回答