施普雷 - 在同一页面上添加到购物车多个变种(Spree - Adding multiple var

2019-10-17 14:45发布

我使用狂欢的ecommerece网站,将被出售来在大量的颜色,大多数客户将要购买同一产品的不同颜色的每个产品(如变体)。 我希望客户被允许添加在同一页上同一商品的多个款式,我现在有一个单选按钮,让您购买的变异和数量的选择变体的列表。 相反,我只是想了一些数量的箱子,默认为零,以便客户可以自己想要的号码简单地添加到每个变异,然后单击添加到购物车。 看着订单控制器后,我想出了这个

 <% 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%>

它工作在这个意义上,它显示了我想要的东西,变体和数量框列表,但每当我添加量,并将它们添加到购物车,它只是默认为名单上的最后一个项目,并在过去的数量框中的数量。 我已经尝试了一些东西,但没有一个正确的,有谁知道我怎么会去这样做?

Answer 1:

Neeeeeeeevermind,阅读order_populate模型,它使用了两个不同的hash模式从产品/变种没有意识到,我试图通过哈希产品,这引起了错误,因为它没有预料的哈希的产品散列,用来代替变体哈希,使用所述代码

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

希望这可以帮助其他人!



文章来源: Spree - Adding multiple variants to cart on the same page