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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top