该fields_for
块不会在has_many
关系中输出。这个问题出现在我正在从事的一个有点涉及的项目中。我把它分解成一个非常简单的测试用例,但它仍然不起作用。这个问题以前被问过,问题通常是嵌套对象不存在。但是在这里,嵌套对象似乎确实存在,如代码注释中所述。我对rails很陌生,所以它可能很明显。
这是简单的案例模型代码:
class Parent < ActiveRecord::Base
has_many :children
accepts_nested_attributes_for :children
end
class Child < ActiveRecord::Base
belongs_to :parent
end
简单案例控制器:
class ParentController < ApplicationController
def index
@parent = Parent.find_by_id(1)
end
end
简单案例视图:
<%= form_for @parent, {:url=>{:action=>:index}} do |f| %>
<!-- this outputs ok -->
<%= f.text_field :name %>
<% f.object.children.each do |c| %>
<!-- this outputs "child1", so the nested object exists -->
<%= c.name %>
<% f.fields_for c do |field| %>
this line does NOT output, nor does the field below
<%= field.text_field :name %>
<% end %>
<% end %>
<% end %>
我也试过这个,看到了同样的结果:
<%= form_for @parent, {:url=>{:action=>:index}} do |f| %>
<%= f.text_field :name %>
output here
<% f.fields_for :children do |field| %>
no output here nor the field below
<%= field.text_field :name %>
<% end %>
<% end %>
我还尝试@parent
在控制器和 a 中使用一个新对象@parent.build_child
(已将 assoc 更改为 a has_one
)。那仍然看到相同的结果。