2009-05-04 6 views
0

Ich versuche, verschachtelte Objektformulare für meine Site zu implementieren, indem ich den Blogbeitrag von Ryan Daigle als Leitfaden verwende (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes). Aus irgendeinem Grund werden die verschachtelten Formularfelder nicht in der Ansicht angezeigt.Probleme mit verschachtelten Formularfeldern, die angezeigt werden

class Instruction < ActiveRecord::Base 
    has_many :steps 
    accepts_nested_attributes_for :steps 
end 

class Step < ActiveRecord::Base 
    belongs_to :instruction 
end 

<% form_for @instruction do |instruction_form| %> 
    <%= instruction_form.error_messages %> 
    <p> 
    <%= instruction_form.label :title %><br /> 
    <%= instruction_form.text_field :title %> 
    </p> 
    <p> 
    <%= instruction_form.label :difficulty %><br /> 
    <%= instruction_form.text_field :difficulty %> 
    </p> 

<% instruction_form.fields_for :steps do |step_form| %> 
    <%= step_form.label :explanation, 'Explanation: ' %> 
    <%= step_form.text_field :explanation %> 

<% end %> 

    <p><%= instruction_form.submit "Submit" %></p> 
<% end %> 

Wenn ich ändere instruction_form.fields_for :steps do |step_form| zu instruction_form.fields_for :step do |step_form| macht die Form, sondern nach Vorlage, erhalte ich ein ‚unbekanntes Attribut: Schritt‘ Fehler.

Was ich tue, scheint dem Tutorial zu entsprechen. Was soll ich überprüfen? Vielen Dank.

Antwort

2

Was passiert in Ihrem Controller? Ich habe das Tutorial noch nicht gelesen und kann es jetzt anscheinend nicht hochziehen (down?), Aber bautest du ein Objekt im Speicher aus, um es auszufüllen?

in Ihrem Controller, in der „neuen“ Aktion, stellen Sie sicher, dass Sie

@instruction = Instruction.new 
@instruction.steps.build 

Dies sind eine Step im Speicher als „Platzhalter“ für das Formular instanziiert in zu füllen. . . zumindest das ist, was ich in meinem eigenen Controller mit einem accepts_nested_attributes_for, und es funktioniert gut.

Lassen Sie mich wissen, ob es funktioniert, und sobald ich das Tutorial nach oben ziehen kann ich kann dieses

+0

zu bearbeiten habe ich wusste, dass ich brauchte @instruction = Instruction.new nicht wusste, dass ich brauchte @instruction zu tun .steps.build. Im Rückblick auf das Tutorial wurde mir klar, dass ich den Abschnitt 'Extras' gelesen haben sollte. Danke für die Hilfe! – sutee

+0

fantastisch! es war ein Schuss im Dunkeln, aber es war das komische Ding, das ich bemerkte, als ich anfing, access_nested_attributes_for prost zu verwenden! – BushyMark

Verwandte Themen