我做了一些表格,并尝试以这种方式制作嵌套表格:
<%= form_for(@birth) do |f| %>
<%= f.text_area(:obs) %>
<%= f.fields_for :child_attributes do |ff| %>
<%= text_field(:child_attributes, :earring) %>
<% end %>
<% end %>
然后,在BirthsController中,我可以通过以下方式获取嵌套属性:
child = params[:child_attributes]
但是,如果我将嵌套表单更改为:
<%= form_for(@birth) do |f| %>
<%= f.text_area(:obs) %>
<%= f.fields_for :child_attributes do |ff| %>
<%= ff.text_field(:earring) %>
<% end %>
<% end %>
它不起作用。 它们之间究竟有什么区别,为什么第二种方式(我认为更优雅)不起作用?
由于
答案 0 :(得分:1)
text_field
方法对您的对象@birth
一无所知,因此该字段的名称只是child_attributes
,这就是您可以通过params[:child_attributes]
访问它的原因,但是这不是你想要的。
您应该使用ff.text_field
。然后在Birth
模型中添加:
accepts_nested_attributes_for :child_attributes
attr_accessible :child_attributes_attributes