2012-06-14 11 views
9

que tienen un modelo de encuentro:rieles asociación has_one forma fields_for no exhiben

class Meeting < ActiveRecord::Base 
    has_one :location, :class_name => "MeetingLocation", :dependent => :destroy 
    accepts_nested_attributes_for :location 

entonces tengo un modelo MeetingLocation:

class MeetingLocation < ActiveRecord::Base 
    belongs_to :meeting 

Mi nueva forma de encuentro:

<%= form_for @meeting do |f| %> 
    <%= f.label :location %> 
    <%= fields_for :location do |l| %> 
    Name <%= l.text_field :name %> 
    Street <%= l.text_field :street %> 
    City <%= l.text_field :city, :class => "span2" %> 
    State <%= l.select :state, us_states, :class => "span1" %> 
    Zipcode <%= l.text_field :zip, :class => "span1" %> 
    <% end %> 

Cuando Veo el nuevo formulario de reunión, ¡los campos de ubicación están en blanco! Solo veo la etiqueta de ubicación pero no otros campos de ubicación. He estado buscando una explicación para las últimas 3 horas, encontré muchas cosas similares pero no tuve suerte.

Gracias.

+0

me reinicia el navegador y ahora veo el fields..but ahora al presentar el formulario en lugar de mostrar "location_attributes" en la URL, que tiene, "localización" => {"name" => "sdsds", "street" => "sdsdsds", ..} debido a que la ubicación no se crea automáticamente, pero se crea una nueva reunión. – absolutskyy

Respuesta

17

La razón por la que los campos de ubicación no se muestran es que cuando se crea una nueva reunión con @meeting = Meeting.new, esta reunión aún no tiene un MeetingLocation asociado. Si llama a @ meeting.location, obtendrá nil. Por este motivo, el formulario no muestra campos para la ubicación.

Para arreglar esto, debe llamar al @meeting.build_location después de crear una nueva reunión. Eso asociará la nueva reunión con una ubicación en blanco.

EDIT: pruebe a cambiar fields_for-f.fields_for

+0

Gracias, pero como dije después de reabrir el navegador y reiniciar el servidor, los campos aparecieron. Ahora mi problema es que cuando guardo una reunión, la ubicación no se guarda automáticamente como se esperaba. Creo que la sugerencia está en la URL, ya que mi ubicación en los parámetros no dice "location_attributes", solo dice ubicación. – absolutskyy

+0

Ver si el cambio en mi EDIT soluciona el problema. – cdesrosiers

+0

Sí, una combinación de ambos funcionó. 1) agregó f.fields_for 2) agregó @ meeting.build_location. Muchas gracias cdesrosiers – absolutskyy

Cuestiones relacionadas