2012-06-14 14 views
9

Ho un modello Meeting:rotaie associazione has_one forma fields_for non visualizzano

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

poi ho un modello MeetingLocation:

class MeetingLocation < ActiveRecord::Base 
    belongs_to :meeting 

mia nuova forma di incontro:

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

Quando Vedo il nuovo modulo di riunione, i campi di posizione sono vuoti! Vedo solo l'etichetta di posizione ma nessun altro campo di posizione. Ho cercato una spiegazione per le ultime 3 ore, ho trovato molti problemi simili ma senza fortuna.

Grazie.

+0

ho riavviato il mio browser e ora vedo il fields..but ora quando l'invio del modulo invece di visualizzare "location_attributes" nell'URL, ha, "location" => {"name" => "sdsds", "street" => "sdsdsds", ..} a causa della quale la posizione non viene creata automaticamente, ma viene creata una nuova riunione. – absolutskyy

risposta

17

Il motivo per cui i campi di posizione non vengono visualizzati è che quando si crea una nuova riunione con @meeting = Meeting.new, questa riunione non ha ancora una MeetingLocation associata. Se chiami @ meeting.location, otterrai zero. Per questo motivo, il modulo non visualizza i campi per la posizione.

Per risolvere questo problema, è necessario chiamare @meeting.build_location dopo aver creato una nuova riunione. Questo associerà la nuova riunione con una posizione vuota.

EDIT: provare a cambiare fields_for-f.fields_for

+0

Grazie, ma come ho detto dopo la riapertura del browser e il riavvio del server, i campi si sono mostrati. Ora il mio problema è che quando salvi una riunione, la posizione non viene salvata automaticamente come previsto. Penso che il suggerimento sia nell'URL dato che la mia posizione nei param non dice "location_attributes", dice semplicemente location. – absolutskyy

+0

Verificare se il cambiamento nel mio EDIT risolve il problema. – cdesrosiers

+0

Sì, una combinazione di entrambi ha funzionato. 1) aggiunto f.fields_for 2) aggiunto @ meeting.build_location. Grazie mille cdesrosiers – absolutskyy

Problemi correlati