1
我想在Rails 3.0.3中创建一个嵌套的模型表单。这里是我的模型:fields_for为嵌套属性返回任何东西
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源代码中没有提示。我听说如果嵌套模型为零(即,如果我忘记在控制器方法中构建它),则会发生这种情况,但它在那里。为了确保,我在视图中添加了一些条件代码。
那么,谁会让我在这里拍我的额头?我错过了什么?
谢谢!
奇怪的是,在两个语句中忽略'='都会呈现'Bird'字段,而不是'Taxon'字段,所以'form_for'似乎适用于旧语法,但不适用于'fields_for'(Rails 3 of课程)。 – zetetic 2010-12-19 00:00:01
哎呀,是的,它是那些在fields_for行中缺少的等号。多么奇怪,它应该是必要的!谢谢! – CharlieMezak 2010-12-19 19:48:59
为什么它还没有渲染的另一个原因是,你没有打电话给'建立'它是你的控制器中的第一个关联:新行为(你可能忽略了)。 – Dominic 2014-03-07 20:02:37