Rails:未定义的方法映射,在模型内使用映射

时间:2012-11-29 20:54:53

标签: ruby-on-rails ruby-on-rails-3

我正在尝试使用我的模型中的地图为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'

2 个答案:

答案 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) %>