Я использую Spree для сайта электронной коммерции, каждый продукт, который будет продаваться, имеет большое количество цветов, и большинство клиентов захотят приобрести один и тот же продукт разных цветов (например, варианты). Я хочу, чтобы клиентам было разрешено добавлять несколько вариантов одного и того же продукта на одной странице. В настоящее время у меня есть список вариантов с переключателем, который позволяет выбрать вариант и количество для покупки. Вместо этого я просто хочу несколько полей количества, которые по умолчанию равны нулю, чтобы покупатель мог просто добавить нужное количество к каждому варианту и нажать «Добавить в корзину». Посмотрев на контроллер заказов, я придумал это
<% has_checked = false
@product.variants.active.each_with_index do |v,index|
next if v.option_values.empty? || (!v.in_stock && !Spree::Config[:show_zero_stock_products])
checked = !has_checked && (v.in_stock || Spree::Config[:allow_backorders])
has_checked = true if checked %>
<li>
<label for="<%= ['products', @product.id, v.id].join('_') %>">
<span class="variant-description">
<%= variant_options v %> <%= text_field_tag (@product.has_variants? ? :quantity : "variants[#{@product.master.id}]"),1, :class => "title", :size => 3 %>
</span>
<% if variant_price_diff v %>
<span class="price diff"><%= variant_price_diff v %></span>
<% end %>
</label>
</li>
<% end%>
Он работает в том смысле, что показывает то, что я хочу, список вариантов и поля количества, но всякий раз, когда я добавляю количества и добавляю их в корзину, по умолчанию просто указывается последний элемент в списке и количество в последнем поле количества. Я пробовал несколько вещей, но ни один из них не был правильным. Кто-нибудь знает, как мне это сделать?