単純な在庫システムを作成しました。製品を購入する前にサイズを選択するためのセレクターを表示したいと考えています。セレクターに在庫のあるアイテムのみを表示し、ユーザーが在庫のないアイテムを選択できないようにします。製品が作成されると、名前と数量を含む一連のバリエーションが作成されるようにしました。したがって、製品を作成すると、それぞれ数量が 0 の Small、Medium、Large という名前の 3 つのバリアントが作成されます。Ruby コンソールを使用して各バリアントの数量を更新し、以下が機能するようにしました。
ビュー/製品/show.html.erb
<div class="size"><br/>Size: <%= f.select(:size, options_for_select(@sizes_availiable), :prompt => "Select a size") %></div>
product_controller.rb
def show
@product = Product.find(params[:id])
@sizes_availiable = Product.build_size_enum( @product.id )
end
Product.rd
def self.build_size_enum(product_id)
p = Product.find(product_id)
a = []
p.variants.each do |var|
unless var.qty = 0
a << var.name
end
end
a
end
ただし、オプションは空です(オプション「サイズを選択」のみ)。Product.rb から (目的に反する) ステートメントを削除すると、メソッドは以下のようになり、リストには small medium と large が取り込まれます。
Product.rd
def self.build_size_enum(product_id)
p = Product.find(product_id)
a = []
p.variants.each do |var|
a << var.name
end
a
end
until ステートメントが問題を引き起こしている理由について何か考えはありますか?