Pregunta

Estoy intentando implementar formularios de objetos anidados para mi sitio, usando la publicación del blog de Ryan Daigle como guía ( http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes ). Por alguna razón, los campos de formulario anidados no aparecen en la vista.

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

Cuando cambio instruction_form.fields_for: steps do | step_form | a instruction_form.fields_for: step do | step_form | , el formulario se procesa, pero al enviarlo, obtengo un 'atributo desconocido: error' paso.

Lo que estoy haciendo parece coincidir con el tutorial. ¿Qué debo comprobar? Gracias.

¿Fue útil?

Solución

¿Qué está pasando en tu controlador? No he leído el tutorial todavía, y parece que no puedo levantarlo ahora mismo (¿abajo?) Pero, ¿estás construyendo un objeto en la memoria para completar?

en tu controlador, en tu " nuevo " Acción, asegúrate de que eres

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

Esto creará una instancia de Step en la memoria como " marcador de posición " para que rellene su formulario. . . al menos esto es lo que hago en mi propio controlador cuando uso un accept_nested_attributes_for , y funciona muy bien.

Avíseme si funciona y, una vez que pueda acceder al tutorial, es posible que tenga que editar este

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top