8

Tengo 2 modelos, lugares y áreas (las áreas constan de campos de nombre y nombre). Están relacionados como: un área tiene muchos lugares y cada lugar pertenece a un área.Crear un menú desplegable de Rails para la base de datos relacionada

Para asignar un lugar a un área, actualmente estoy ingresando el número area_id en un campo de texto en la página crear nuevo lugar. entonces puedo mostrar en qué área el lugar pertenece a con:

<%= venue.area.name %> 

En lugar de tener que introducir el número de identificación de la zona en forma me gustaría tener un desplegable con los nombres de área para todos los registros de la zona y para que el seleccionado se asocie con ese lugar en guardar.

La nueva forma sede:

<% 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 %> 

que he intentado:

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

Pero conseguir:

tiene un objeto nulo cuando lo hizo no esperas!
Es posible que haya esperado una instancia de matriz.
se produjo el error mientras que la evaluación nil.map

Cualquier ayuda es muy apreciada!

Respuesta

29

Parece que @areas no está definido y tal vez un par de otros problemas también. Pruebe esto:

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

¡Fantástico, funciona! Muchas gracias por la respuesta rápida! – Dave

0

Como dijo aNoble, ¡está bien! Si desea ordenar por nombre, simplemente use lo siguiente:

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