我有2个模型,场地和区域(区域由id和name字段组成)。它们的关联点是:一个区域有许多场地,每个场地都属于一个区域。
将我正在输入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) %>
但是得到:
当你没有时,你有一个零对象 期待它!你可能已经预料到了 数组的实例。
时
发生错误 在评估nil.map
非常感谢任何帮助!
答案 0 :(得分:29)
看起来@areas
未定义,也可能是其他几个问题。试试这个:
<%= f.collection_select(:area_id, Area.all, :id, :name) %>
答案 1 :(得分:0)
正如诺布尔所说,这是对的! 如果您想按名称订购,只需使用以下内容:
<%= f.collection_select :area_id, Area.order(:name),
:id, :name %>