Spree — добавление нескольких вариантов в корзину на одной странице

Я использую 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%>

Он работает в том смысле, что показывает то, что я хочу, список вариантов и поля количества, но всякий раз, когда я добавляю количества и добавляю их в корзину, по умолчанию просто указывается последний элемент в списке и количество в последнем поле количества. Я пробовал несколько вещей, но ни один из них не был правильным. Кто-нибудь знает, как мне это сделать?


person rolands    schedule 16.01.2013    source источник


Ответы (1)


Neeeeeevermind, прочитал модель для order_populate, не понял, что она использует две разные хеш-модели из продуктов/вариантов, я пытался передать хеш-продукты, что вызвало ошибки, потому что не ожидалось хэш с хэшем продуктов, вместо этого использовал хэш вариантов, используя код

<%= text_field_tag "variants[#{v.id}]",0, :class => "title", :size => 3, :disabled => !v.in_stock && !Spree::Config[:allow_backorders] %>

Надеюсь, это поможет другим людям!

person rolands    schedule 19.01.2013