0

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)。那仍然看到相同的结果。

4

1 回答 1

1

你忘了把=标志放在后面<%

代替:

   <% f.fields_for :children do |field| %>

和:

   <%= f.fields_for :children do |field| %>
于 2012-05-05T19:04:02.903 回答