所以,由于我对 Rails(和 ruby)还很陌生,所以我仍然试图了解这里哪里出了问题。我正在网上商店的购物车上工作。用户获得一个存储他的购物车项目(在本例中为 line_item.rb)的会话。
问题: 当我单击一个项目时,它会通过购物车方法 add_product 添加到购物车中。如果您再次单击同一个项目,而不是两次添加相同的项目,它应该简单地 ++1 到该项目的数量属性。但是,当我第二次单击它时,我得到错误页面:
LineItemsController#create 中的 NoMethodError
undefined method `+' for nil:NilClass
这是我的购物车.rb:
class Cart < ActiveRecord::Base
has_many :line_items, dependent: :destroy
def add_product(product_id)
current_item = line_items.find_by_product_id(product_id)
if current_item
current_item.quantity += 1
Rails.logger.debug(current_item.quantity)
else
current_item = line_items.build(:product_id => product_id)
end
current_item
end
end
line_item 的数量属性是整数类型。应该能够向它添加整数,对吧?这就是我此刻感到困惑的地方。
这是 line_items_controller.rb 中的“create”方法:
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
@line_item.product = product
respond_to do |format|
if @line_item.save
format.html { redirect_to @line_item.cart,
notice: 'Line item was successfully created.' }
format.json { render json: @line_item,
status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors,
status: :unprocessable_entity }
end
end
结尾
有任何想法吗?
干杯