如果数量为0,则删除项目

时间:2013-01-28 23:50:12

标签: ruby-on-rails ruby

如果用户更新了商品的数量,我想保存购物车(这样我就可以重定向到它)并销毁该订单项。我还想检查以确保该项目的库存足够,如果他们要增加数量。所以我的更新函数看起来像这样(相信响应函数可以工作,就像它们看起来那样。它将代码减少了一半,因此更容易查看):

  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,然后如果你尝试从删除它更新它。我认为这意味着它无法告诉get_inventory_check方法中的line_item已更新,但在if语句中使用params也不起作用。

1 个答案:

答案 0 :(得分:4)

params[:item][:qty]很可能是String,因此@line_item_new_qty == 0将返回false。解决此问题的一种方法是将@line_item_new_qty转换为整数:

if @line_item_new_qty.to_i == 0

或者你可以将它与"0"进行比较,但一般来说,问题可能是比较不同的类型。