Проблемы с отображением вложенных полей формы
-
03-07-2019 - |
Вопрос
Я пытаюсь внедрить формы вложенных объектов для моего сайта, используя сообщение в блоге Райана Дейгла в качестве руководства ( 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 %>
Когда я изменяю manual_form.fields_for: steps do | step_form |
на manual_form.fields_for: step do | step_form |
, форма отображается, но после отправки я получаю Ошибка «неизвестный атрибут: шаг».
То, что я делаю, похоже на учебник. Что я должен проверить? Спасибо.
Решение
Что происходит в вашем контроллере? Я еще не читал учебник и не могу сейчас его подтянуть (вниз?), Но вы строите объект в памяти для заполнения? Р>
в вашем контроллере, в вашем " новом " действие, убедитесь, что вы
@instruction = Instruction.new
@instruction.steps.build
Это создаст экземпляр Step
в памяти как " заполнитель " для заполнения формы. , , по крайней мере, это то, что я делаю в своем собственном контроллере, когда использую accepts_nested_attributes_for
, и это прекрасно работает. Р>
Дайте мне знать, если это работает, и как только я смогу открыть учебник, мне, возможно, придется отредактировать это