nil的未定义方法'':NilClass

时间:2016-12-14 13:04:02

标签: ruby

试图为使用红宝石销售自行车的应用程序制作一个简单的购物车。这个错误使我陷入困境,所以任何帮助都将非常感激!

当我想要向购物车添加内容时,会出现错误。它与我的lineitems控制器或我的购物车模型有关。

对于我的订单项:

@lineitem = @cart.add_bike(bike.id)

对于我的模特:

def add_bike(bike_id)
  current_item = lineitems.find_by_bike_id(bike_id)
  if current_item
    current_item.quantity +=1
  else
    current_item = lineitems.new(bike_id: bike_id)
    current_item.quantity = 1
  end
  current_item          #this is returning the current_item object  
end

我的错误是undefined method `add_bike' for nil:NilClass

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

1 个答案:

答案 0 :(得分:1)

@cart未在您的控制器中初始化,并且等于nil

您的@cart不是购物车,add_bike未定义为非购物车。

您应该向我们展示@cart.add_bike(bike.id)

之前发生的事情

更新:

  • 在使用current_cart

  • 之前,您似乎没有致电@cart.add_bike(bike.id)
  • 您的current_cart定义@cart,但在创建新的@cart.id时会返回@cart