Rails为多个has_many关系的模型渲染fields_for

时间:2012-05-14 15:08:47

标签: ruby-on-rails forms fields-for

我有一个属于主容器模型的模型componentscomponents模型包含许多serversservices。基本上一切都很好,除了它每个都有两个,因为在我的控制器中我使用这个代码设置了fields_for

@reference.components.build.servers.build
@reference.components.build.services.build

所以我很清楚为什么我会得到多个表单,有没有办法在一行上建立has_many关系?我试过了:

@reference.components.build.servers.build.services.build

1.times { @reference.components.build.servers.build }
1.times { @reference.components.build.services.build }

谢谢

更新 - >

将代码移动到块中似乎可行(我只是在猜测)

@reference.components.build do |f|
  f.servers.build
  f.services.build
end

该代码在控制器中。

1 个答案:

答案 0 :(得分:1)

关键是只调用components.build一次,否则你每次调用都要添加一个组件来构建

例如

component = @reference.components.build
component.servers.build
component.services.build

应该可以正常工作。您偶然发现的块形式实现了相同的目标(我感觉这只是在3.2中添加的,可能是3.2之后的一个次要版本)