2009-05-04 9 views
0

Я пытаюсь реализовать вложенные формы объекта для своего сайта, используя сообщение блога Райана Дайгла в качестве руководства (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes). По некоторым причинам вложенные поля формы не отображаются в представлении.Проблемы с вложенными полями формы, отображающимися вверх

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

Когда я изменяю instruction_form.fields_for :steps do |step_form| в instruction_form.fields_for :step do |step_form|, форма делает, но после представления, я получаю «неизвестный атрибут: шаг» ошибка.

То, что я делаю, похоже, соответствует учебнику. Что я должен проверить? Благодарю.

ответ

2

Что происходит в вашем контроллере? Я еще не читал учебник и не могу сейчас его подтянуть (вниз?), Но вы строите объект в памяти, чтобы заполнить его?

в контроллере, в ваших «новых» действиях, убедитесь, что вы

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

Это экземпляр Step в памяти как «заполнитель» для вашей формы для заполнения. , , по крайней мере, это то, что я делаю в своем собственном контроллере при использовании accepts_nested_attributes_for, и он отлично работает.

Позвольте мне знать, если он работает, и как только я могу потянуть учебник, я, возможно, придется изменить этот

+0

Я знал, что мне нужно @instruction = Instruction.new не знал, что мне нужно сделать @instruction .steps.build. Оглядываясь на учебник, я понял, что должен прочитать раздел «Дополнительные». Спасибо за помощь! – sutee

+0

фантастический! это был выстрел в темноте, но это была странная вещь, которую я заметил, когда я начал использовать accepts_nested_attributes_for ура! – BushyMark