Это интернет-магазин
Я создаю продукт с вложенными размерами_атрибутов
Клиент может купить товар, и он должен выбрать свой размер
products_controller.rb
def params_product
params.require(:product).permit(:title, :description, :price,
:category_id, :color, sizes_attributes: [:id, :size_name, :quantity, :_destroy])
end
products / show.html.erb
Таким образом, клиент может выбрать требуемое количество и его размер
<%= form_tag order_items_path do %>
<%= hidden_field_tag :product_id, @product.id %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= number_field_tag :quantity, 1 %>
<%= collection_select :size, :id, @product.sizes, :id, :size_name, prompt: "Votre taille" %>
<%= submit_tag "Add to Cart" %>
<% end %>
shopping_cart.rb
def initialize(token:)
@token = token
end
def order
@order ||= Order.find_or_create_by(token: @token, status: 0) do |order|
order.sub_total = 0
end
end
def add_item(product_id:, quantity: 1, user_id:, size_id:)
@product = Product.find(product_id)
@size = Size.find_by(id: size_id)
#binding.pry
user = User.find(user_id)
order.user_id = user.id
order_item = order.items.find_or_initialize_by(product_id: product_id)
order_item.price = @product.price
order_item.quantity = quantity
order_item.size_id = @size.id
ActiveRecord::Base.transaction do
order_item.save
end
end
order_items_controller.rb
def create
current_cart.add_item(
product_id: params[:product_id],
quantity: params[:quantity],
user_id: params[:user_id],
size_id: params[:size_id]
)
end
Итак, проблема в следующем:
- Доступные размеры на товаре могут быть ["S", "M", "L", "XL"]
- Мой пользователь выбрал "L"
- Выбранный размер:не сохранен
Он записывает "S" ...