Probleme mit verschachtelten Formularfelder zeigt sich
-
03-07-2019 - |
Frage
Ich versuche, für meine Website verschachtelte Objektformen zu implementieren, mit Ryan Daigle Blogbeitrag als Führung ( http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes ). Aus irgendeinem Grund scheinen die verschachtelten Formularfelder nicht in der Ansicht.
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 instruction_form.fields_for :steps do |step_form|
ändern 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 das Tutorial zu entsprechen. Was sollte ich überprüfen? Danke.
Lösung
Was in Ihrem Controller ist da los? Ich habe nicht das Tutorial noch, und kann nicht scheinen, es jetzt zu ziehen oben (unten?), Sondern bauen Sie ein Objekt im Speicher heraus zu füllen?
in Ihrem Controller, in den "neuen" Aktion, stellen Sie sicher, dass Sie
@instruction = Instruction.new
@instruction.steps.build
Dies wird eine Step
im Speicher als „Platzhalter“ für das Formular instanziiert zu füllen. . . zumindest ist es das, was ich in meinem eigenen Controller tun, wenn eine accepts_nested_attributes_for
verwenden, und es funktioniert super.
Lassen Sie mich wissen, ob es funktioniert, und sobald ich das Tutorial nach oben ziehen kann ich kann dies bearbeiten