2013-03-13 87 views
1

我有一个产品型号,我需要一个我的options_from_collection_for_select从我的产品型号的其中一列填充,但是我需要options_for_select是唯一的,并且并非来自该列的所有值在重复。Rails 3选择标签

回答

0

虽然Rails提供通过独特的列值选择方法,它的速度更快,直接读取唯一结果使用find_by_sql模型方法。

# app/controllers/products_controller.rb 
@unique_products = Product.find_by_sql("SELECT * FROM products GROUP BY unique_column") 

# app/views/products/_form.html.erb 
<%= select_tag 'product', options_from_collection_for_select(@unique_products, 'id', 'name') 
0

得到你的产品模型的特定列的唯一列表:

Product.uniq.pluck(:size) 
+0

我试过这个,并得到一个异常:“未定义的方法部”“:String',但我可以在控制台中检索它。 – Yogzzz 2013-03-13 04:53:37

0

@uniq_products = Product.group(:column_name) 

select_tag "product", options_from_collection_for_select(@uniq_products, "id", "<column_name>")