我做了一个简单的库存系统,想在购买产品之前显示一个选择器来选择尺寸。我希望选择器只显示有库存的商品,不允许用户选择没有库存的商品。我这样做是为了在创建产品时创建一组变体,包括它们的名称和数量。因此,当我创建产品时,它会创建 3 个变体,分别命名为 Small、Medium 和 Large,每个变体的数量为 0。我使用 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
产品.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 中删除了 unless 语句(这违背了目的),因此该方法如下所示,列表中填充了小型和大型:
产品.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
关于为什么除非语句引起问题的任何想法?