2013-10-06 23 views
8

我有一個導軌形式的下拉菜單:軌道4填入下拉值從數據庫

<%= f.select :lists, [["test1", 1], ["test2", 0]] %> 

這工作得很好,但我怎樣才能使它的動態。 (與模型數據交互)

我有一個控制器,含@list = List.all

我怎麼能填充在我comboboxidname動作。我一直在四處尋找,但我對此不清楚。任何人都可以幫助>

回答

11

您可以使用options_from_collection_for_select

<% options = options_from_collection_for_select(@list, 'id', 'name') %> 
<%= f.select :all_val, options %> 
+0

如果我使用'options_from_collection_for_select(@people, '身份證',' name')'作爲'nil:NilClass'的未定義方法'map'出錯。我在做什麼錯誤 – overflow

+0

我猜想'''@ people'''是零。你在你的問題中使用''list''''。 – mechanicalfish

+0

對不起,這是複製粘貼錯誤,實際上我有這樣的'<%= options_from_collection_for_select(@list,'id','name')%>'但是同樣的錯誤 – overflow

2

有點不足夠的聲譽在上述@learner線程響​​應你的問題,但有一個很好的機會,@overflow沒有在他的控制定義@list。

爲了解決我的情況,我把我等同@list的(在這種情況下@restaurants)在我的「高清新」的方法,因爲我用它來幫助創建相關的餐飲新項目。

# GET /specials/new 
    def new 
    @special = Special.new 
    @restaurants = Restaurant.all // Look Here 
    end 

此外,:在原有的響應all_val應該是要在傳遞到數據庫的參數。在我的情況下,它是:restaurant_id

0

這爲我工作

# view 
<%= form.select(:list_id) do %> 
    <% @list.each do |l| -%> 
     <%= content_tag(:option, l.name, value: l.id) %> 
    <% end %> 
<% end %> 

# controller 
@list ||= List.all 

`