0

我正在尝试为我的网站实现嵌套对象表单,使用 Ryan Daigle 的博客文章作为指南(http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-嵌套属性)。由于某种原因,嵌套的表单字段不会出现在视图中。

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|时,表单呈现,但在提交时,我收到一个“未知属性:步骤”错误。

我正在做的似乎与教程相匹配。我应该检查什么?谢谢。

4

1 回答 1

2

你的控制器发生了什么?我还没有阅读教程,现在似乎无法将其拉起(向下?)但是您是否要在内存中构建一个对象来填充?

在您的控制器中,在您的“新”操作中,确保您是

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

这会将Step内存中的 a 实例化为表单的“占位符”以填写 . . . 至少这是我在使用 a 时在自己的控制器中所做的accepts_nested_attributes_for,并且效果很好。

让我知道它是否有效,一旦我可以提取教程,我可能需要编辑它

于 2009-05-04T23:42:51.260 回答