railsのカート機能についてです。
すでにカートにある商品を、追加した場合なのですが、
数量表示のみを変更することができたので記しておきます。
具体的な方法としては、すでにカートにある商品がさらに追加されたときには、カートにある商品の数量を変更してupdateするようにしています。
cart_items_controller
def create
@cart_item = current_user.cart_items.build(cart_item_params)
@cart_items = current_user.cart_items.all
end
すでにカートにある商品の情報が知りたいので、カートの商品を全て取ってきます。
cart_items_controller
def create
@cart_item = current_user.cart_items.build(cart_item_params)
@cart_items = current_user.cart_items.all
@cart_items.each do |cart_item|
if cart_item.item_id == @cart_item.item_id
end
end
end
カート内の商品と新しくカートに追加する商品で同じものがあるかどうかを探すために、each文で回してあげ、同じ商品があったときはカート内の同商品の数量を変更してあげるようにします。
すでにカートに入れてる数量と新しく追加した数量を足した数量を、
new_quantityとしてupdateしてみたら動きました。
cart_items_controller
def create
@cart_item = current_user.cart_items.build(cart_item_params)
@cart_items = current_user.cart_items.all
@cart_items.each do |cart_item|
if cart_item.item_id == @cart_item.item_id
new_quantity = cart_item.quantity + @cart_item.quantity
cart_item.update_attribute(:quantity, new_quantity)
@cart_item.delete
end
end
@cart_item.save
redirect_to :cart_items
end
以上になります!
もっといいやり方があれば教えて下さい!