2012-11-29 37 views
0

我努力使項目的集合options_for_select使用地圖我的模型裏面:Rails的:未定義的方法地圖,使用地圖內模型

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

但是Rails是給錯誤:

undefined method `map' for :get_products:Symbol

模型中使用映射是不可能的?

view的代碼是:

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

更新

更改在視圖中get_products代替:get_products代碼給出了錯誤:

undefined local variable or method `get_products' for #<#:0xb189c770>

+1

我們可以看到你正在調用'options_for_select'的行嗎? – patrickmcgraw

+1

所有上述工作正常(返回數組數組);很有可能是你在引發問題的'options_for_select'中引用它 - 可能它應該是'get_products'而不是':get_products'? –

回答

3

options_for_select期望一個集合被傳入而不是符號。我相當確定你的錯誤來自於Rails代碼而不是你的模型。

變化#get_products是一個類的方法:

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

然後在視圖(假設一個叫Product模型中#get_products生活):

<%= f.select :product_id, options_for_select(Product.get_products) %> 
+1

非常感謝你,但對我而言,'form_for'沒有'select_tag'方法。我該怎麼辦? –

+0

@EH_warch我更新了我的答案。我不認爲你需要'_tag'只是'f.select' – patrickmcgraw

+0

就像一個魅力,非常感謝。 –

0

應該是這樣的

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

+0

如果不在模型內部添加'self'不起作用 –

+0

對不起,以爲你已經擁有了這個功能,但我想這是來自@ patricmcgraw的回覆 – Magicmarkker

相關問題