fields_for for nested属性不返回任何内容

时间:2010-12-18 21:11:42

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

我正在尝试在Rails 3.0.3中创建一个嵌套的模型表单。这是我的模特:

class Bird < ActiveRecord::Base
  has_one :taxon, :as => :organism
  accepts_nested_attributes_for :taxon
end

class Taxon < ActiveRecord::Base
  belongs_to :organism, :polymorphic => true
end

这是控制器方法:

def new
  @bird = Bird.new
  @bird.build_taxon
end

以下是表格:

New Bird
<% form_for @bird do |f| %>
<p>
    <%= f.label :wingspan %>
    <%= f.text_field :wingspan %>
</p>
<p>
    <%= f.label :body_length %>
    <%= f.text_field :body_length %>
</p>
<% f.fields_for :taxon do |builder| %>
    <%= builder.label :common_name %>
    <%= builder.text_field :common_name %>
    <%= builder.label :genus_name %>
    <%= builder.text_field :genus_name %>
    <%= builder.label :species_name %>
    <%= builder.text_field :species_name %>
<% end %>
<%= f.submit %>
<% end %>

当我运行新方法时,分类单元的字段不会显示。在html源代码中没有提示它们。我听说如果嵌套模型为零(即如果我忘记在控制器方法中构建它),就会发生这种情况,但它就在那里。我在视图中添加了一些条件代码以确保。

那么,谁会让我在这里砸我的额头?我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:8)

您使用的是Rails 3吗?如果是这样的话应该是:

<%= form_for @bird do |f| %>

<%= f.fields_for :taxon do |builder| %>

注意等于。