ユーザーがアイテムの数量を更新した場合、カートを保存して (リダイレクトできるように)、その品目を破棄します。また、数量を増やす場合は、その商品の在庫も十分にあることを確認したいです。したがって、私の更新関数は次のようになります (応答関数が機能しているように見えることを信頼してください。コードが約半分にカットされているため、見やすくなっています)。
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 を使用しても機能しません。