我正在尝试使用我的模型中的地图为options_for_select
制作一组项目:
def get_products
Product.all.map { |product| [product.description,product.id] }
end
然而,rails正在给出错误:
未定义的方法`map':get_products:Symbol
是否无法在模型内使用地图?
view
中的代码是:
<%= f.select_tag :product_id, options_for_select(:get_products) %>
更新
将视图中的代码更改为get_products
而不是:get_products
会出错:
#&lt;#:0xb189c770&gt;
的未定义局部变量或方法`get_products'
答案 0 :(得分:3)
options_for_select
期望传入集合而不是符号。我很确定你的错误来自Rails代码而不是你的模型。
将#get_products
更改为类方法:
def self.get_products
Product.all.map { |product| [product.description,product.id] }
end
然后在视图中(假设#get_products
存在于名为Product
的模型中):
<%= f.select :product_id, options_for_select(Product.get_products) %>
答案 1 :(得分:0)
它应该是这样的
<%= f.select_tag :product_id, options_for_select(Product.get_products) %>