2012-06-14 13 views
9

Mam modelu posiedzenia:szyny stowarzyszenie has_one forma fields_for niewyświetlające

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

to mam model MeetingLocation:

class MeetingLocation < ActiveRecord::Base 
    belongs_to :meeting 

Moja nowa forma spotkań:

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

Kiedy Widzę nowy formularz spotkania, pola lokalizacji są puste! Widzę tylko etykietę lokalizacji, ale nie ma innych pól lokalizacji. Szukałem wyjaśnienia w ciągu ostatnich 3 godzin, znalazłem wiele podobnych problemów, ale bez powodzenia.

Dzięki.

+0

ja ponownie uruchomić przeglądarkę i teraz widzę fields..but teraz po wysłaniu formularza zamiast wyświetlania "location_attributes" w adresie URL, to posiada "Location" => {"name" => "sdsds", "street" => "sdsdsds", ..} z powodu tego, która lokalizacja nie jest tworzona automatycznie, ale nowe spotkanie zostanie utworzone. – absolutskyy

Odpowiedz

17

Powodem, dla którego pola lokalizacji nie są wyświetlane, jest to, że po utworzeniu nowego spotkania z @meeting = Meeting.new, to spotkanie nie ma jeszcze przypisanej pozycji MeetingLocation. Jeśli wywołasz @ meeting.location, otrzymasz zero. Z tego powodu formularz nie wyświetla pól dla lokalizacji.

Aby to naprawić, po utworzeniu nowego spotkania należy zadzwonić pod numer @meeting.build_location. To utworzy nowe spotkanie z pustą lokalizacją.

EDIT: spróbuj zmienić fields_for do f.fields_for

+0

Dzięki, ale jak powiedziałem po ponownym otwarciu przeglądarki i ponownym uruchomieniu serwera pola pojawiły się. Teraz mój problem polega na tym, że po zapisaniu spotkania lokalizacja nie jest automatycznie zapisywana zgodnie z oczekiwaniami. Myślę, że wskazówka znajduje się w adresie URL, ponieważ moja lokalizacja w parametrach nie mówi "location_attributes", to po prostu mówi lokalizacja. – absolutskyy

+0

Sprawdź, czy zmiana w EDYCJI rozwiązuje problem. – cdesrosiers

+0

Tak, połączenie obu działało. 1) dodano f.fields_for 2) dodano @ meeting.build_location. Wielkie dzięki – absolutskyy

Powiązane problemy