我有一个下拉列表,我试图填充ActiveRecord的结果。我想我不明白如何访问我检索的值,因为下面的代码用
这样的值填充我的下拉列表 #<Product:0x007f1f488565b0>
这显然不是我想要的。
<%= f.select :accessory, options_for_select(Product.select(:item_number, :id).where(:accessory=> 't') {|c| [ c.item_number, c.id ] }), {include_blank: true}, { :class => 'form-control'} %>
如何使用商品编号和ID填充下拉列表?此查询中不涉及任何关系。我只想要一个标有“&#34; t&#34;用于配件。
答案 0 :(得分:0)
你是如此接近: - )
options_for_select的参数应该是一个具有可枚举对象的对象,它们响应:first和:last
你正在传递
Product.select(:item_number, :id).where(:accessory=> 't')
作为参数。 但我的猜测是你要通过
Product.select(:item_number, :id).where(:accessory=> 't')
.map{|c| [ c.item_number, c.id ] })
你只是忘了把'地图'。
Ruby允许你将块传递给任何方法,这就是你没有得到任何警告或错误的原因,但是这个块将被忽略。