8

我有2個模型,場地和區域(區域由id和名稱字段組成)。它們相關爲:一個地區有許多場地,每個場地都屬於一個地區。爲相關數據庫創建Rails下拉列表

要將場地分配到區域,我正在將area_id編號輸入到創建新場地頁面的文本字段中。然後我就可以顯示該場地屬於哪一個區域用:

<%= venue.area.name %> 

而不必在表單中輸入的區域的ID號的我想有一個下拉列表的區域名稱爲所有區域記錄和對於選定的人在保存時與該場所相關聯。

新場地形式:

<% form_for @venue do |f| %> 
    <p>name: <br> 
    <%= f.text_field :name %></p> 

    <p>address line 1: <br> 
    <%= f.text_field :addressline1 %></p> 

    <p>address line 2: <br> 
    <%= f.text_field :addressline2 %></p> 

    <p>address line 3: <br> 
    <%= f.text_field :addressline3 %></p> 

    <p>area_id: <br> 
    <%= f.text_field :area_id %></p> 

    <%= submit_tag %> 
<% end %> 

我曾嘗試:

<p>area_id: <br> 
    <%= collection_select(:area, :name, @areas, :id, :name) %> 

但得到:

你有一個零對象時,你沒有 指望它!
您可能預期了Array的一個 實例。
發生錯誤 雖然評估nil.map

任何幫助非常感謝!

回答

29

它看起來像@areas沒有定義,也可能是其他一些問題。試試這個:

<%= f.collection_select(:area_id, Area.all, :id, :name) %> 
+0

神奇,它的工作原理!非常感謝您的快速回答! – Dave 2011-01-19 22:36:59

0

作爲一個沒有說的,它是正確的! 如果你想按名稱排序,只需使用以下內容:

<%= f.collection_select :area_id, Area.order(:name), 
    :id, :name %>