2

在我的

<%= nested_form_for @object do |f| %>

我有一个像这样的nested_form:

<%=f.fields_for :nested, :url => { :action => "new" } do |build| %>
   <%= render 'nested_fields', :f => build %>
<% end %>

在那个nested_field 里面,我有另一个fields_for :nested2

我的问题是:我希望 nested2 在调用 nested 时出现 1 次。我在嵌套控制器的新操作中尝试了

@nested = Nested.new
@nested.nested2.build

但这仅适用于“真正的”新动作。有没有解决这个问题的方法?

我正在使用“nested_form”gem。

4

1 回答 1

3

fields_for允许您指定要为其呈现字段的特定对象,因此如果您希望您的nested_fields部分包含单个新构建nested2模型的嵌套字段,您可以在fields_for调用本身中执行此操作,如下所示:

# '_nested_fields.html.erb'

...
<%= f.fields_for :nested2, f.object.build_nested2 do |build| %>
  <%= ... %>
<% end %>

这是假设Nested has_one :nested2,如果它是一个has_many关联,则fields_for参数会略有不同:

<%= f.fields_for :nested2s, f.object.nested2s.build do |build| %>

f.object允许您访问表单构建器的对象,然后您可以使用它的关联方法(基于关联类型)在该点构建新对象。

于 2013-03-08T01:28:27.483 回答