【问题标题】:Spree - Adding multiple variants to cart on the same pageSpree - 在同一页面上将多个变体添加到购物车
【发布时间】:2023-09-25 08:51:01
【问题描述】:

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

它的工作原理是它显示了我想要的东西,一个变体列表和数量框,但是每当我添加数量并将它们添加到购物车时,它只是默认为列表中的最后一个项目和最后一个中的数量数量框。我已经尝试了几件事,但没有一个是正确的,有人知道我会怎么做吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3.2 e-commerce spree


    【解决方案1】:

    Neeeeeeeevermind,阅读 order_populate 的模型,没有意识到它使用了产品/变体中的两个不同的哈希模型,我试图传递哈希产品,这导致了错误,因为它不期望哈希与产品哈希,而不是使用变体哈希,使用代码

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

    希望这对其他人有所帮助!

    【讨论】:

      最近更新 更多