Ну, у вас уже есть что-то настроенное в тесной манере. У вас есть метод increment_quantity в вашей модели элемента корзины, поэтому вам нужно настроить модель корзины, чтобы вы могли указать продукт, а затем вызвать новый метод, например:
cart.rb (при условии, что это модель вашей корзины)
def increment_product_quantity(id, quantity)
product_to_increment = @items.select{|product| product.product_id == id}
# We do this because select will return an array
unless product_to_increment.empty?
product_to_increment = product_to_increment.first
else
# your error handling here
end
product_to_increment.quantity = quantity
end
def remove_product(id)
@items.delete_if {|product| product.product_id == id }
end
Теперь вам нужно изменить модель элемента корзины, чтобы количество было не объектом attr_reader, а объектом attr_accessor, или создать метод для элементов корзины, специально для которого вы устанавливаете количество; ваш выбор.
Есть еще несколько вещей, которые можно сделать, но это примерно самый простой и чистый метод, который я могу порекомендовать прямо сейчас.