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 に答える