Проблемы с отображением вложенных полей формы - PullRequest
0 голосов
/ 04 мая 2009

Я пытаюсь реализовать формы вложенных объектов для моего сайта, используя в качестве руководства сообщение в блоге Райана Дейгла (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|, форма отображается, но после отправки я получаю ошибку «неизвестный атрибут: шаг».

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

1 Ответ

2 голосов
/ 05 мая 2009

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

в вашем контроллере, в вашем "новом" действии, убедитесь, что вы

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...