如果用户更新了商品的数量,我想保存购物车(以便我可以重定向到它)并销毁该商品。如果他们要增加数量,我还想检查以确保该项目的库存也有足够的库存。所以我的更新函数看起来像这样(相信响应函数可以正常工作,就像它们看起来那样。它将代码削减了一半,因此更容易查看):
def update
@line_item = LineItem.find(params[:id])
@line_item_new_qty = params[:item][:qty]
unless LineItem.get_inventory_check?( @line_item.id , params[:item][:qty] )
respond 'Insufficient Inventory'
else
if @line_item_new_qty == 0
@line_item_cart = @line_item.cart
@line_item.destroy
respond 'Item Deleted'
else
respond 'Quantity Updated'
end
end
end
get_inventory_check 似乎在工作,如果有足够的,它会更改并保存 line_item 的数量,并返回 true。否则,它严格返回 false。
我已经尝试将 if == 0 语句放在每个可能的位置,我唯一可以开始工作的是如果我有@line_item.qty == 0,那么它将首先将其删除,然后将其更新为 0,然后如果您尝试从他们的删除中更新它。我认为这意味着它无法判断 line_item 已在 get_inventory_check 方法中更新,但在 if 语句中使用 params 也不起作用。