1

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

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

4

1 に答える 1

1

Neeeeeeeevermind、order_populateのモデルを読んで、製品/バリアントからの2つの異なるハッシュモデルを使用していることに気づいていませんでした。ハッシュ製品を渡そうとしていたため、製品ハッシュを含むハッシュを予期していなかったため、エラーが発生しました。代わりに、コードを使用してバリアントハッシュを使用しました

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

これが他の人に役立つことを願っています!

于 2013-01-19T01:34:23.337 に答える