0

我正在尝试制作一组​​项目以options_for_select在我的模型中使用地图:

  def get_products
    Product.all.map { |product| [product.description,product.id] }
  end

但是rails给出了错误:

:get_products:Symbol 的未定义方法“map”

不能在模型内使用地图吗?

中的代码view是:

<%= f.select_tag :product_id, options_for_select(:get_products) %>

更新

将视图中的代码更改为get_products而不是:get_products给出错误:

#<#:0xb189c770> 的未定义局部变量或方法“get_products”

4

2 回答 2

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) %>
于 2012-11-29T21:06:19.210 回答
0

它应该是这样的

<%= f.select_tag :product_id, options_for_select(Product.get_products) %>

于 2012-11-29T21:06:58.347 回答