嵌套表单字段出现问题

时间:2009-05-04 01:04:02

标签: ruby-on-rails ruby nested-forms

我正在尝试为我的网站实现嵌套对象表单,使用Ryan Daigle的博客文章作为指南(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 个答案:

答案 0 :(得分:2)

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

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

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

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

让我知道它是否有效,一旦我能够完成教程,我可能需要编辑这个