如何从订单中删除 LineItem 实例 (Spree)

How to remove LineItem instance from an order (Spree)

我正在使用 Spree,但我并不完全熟悉内置方法。 我试图做到这一点,以便当 params[:quantity] == 0 时,line_item 实例被删除并从订单中移除。我试过调用销毁!在这个实例上,但这并没有奏效,还有一些其他的内置功能。

def update
  @order = current_order
  @line_item = Spree::LineItem.find(params[:id])
  @line_item.quantity = params[:quantity]
  @line_item.save
  # can't figure out a way to remove line_item when quantity is set to zero
  @order.update!

  respond_with(@order) do |format|
    format.json{render json: @order}
  end
end

感谢任何帮助,提前致谢!

你几乎做对了。它需要在您的代码中更正如下

def update
  @order = current_order
  @line_item = Spree::LineItem.find(params[:id])
  @line_item.quantity -= params[:quantity]
  if @line_item.quantity == 0
    @line_item.destroy
  else
    @line_item.save!
  end
  respond_with(@order) do |format|
    format.json{render json: @order}
  end
 end