私はecommereceサイトに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%>
必要なもの、バリエーションと数量ボックスのリストを表示するという意味で機能しますが、数量を追加してカートに追加すると、デフォルトでリストの最後のアイテムと最後の数量ボックスの数量になります。私はいくつかのことを試しましたが、どれも正しくありませんでした、誰かが私がこれを行う方法を知っていますか?