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)


Neeeeeeeevermind, прочетете модела за 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