2012-05-14 59 views
0

我有一个模型components,它属于主容器模型。 components模型有许多serversservices。基本上,一切都很好,除了它,因为在我的控制器我成立了fields_for使用此代码呈现出每两个:Rails为具有多个has_many关系的模型呈现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

最关键的事情是只能调用一次components.build,否则你将添加每次调用一个组件来构建

例如

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

应该正常工作。你偶然发现的块形式达到了同样的效果(我有一种感觉,那只是在3.2中添加的,可能是3.2之后的一个小版本)

+0

嘿很多谢谢你的回应。我仍然使用rails 3.1.3,但感谢您的解决方案。这是有道理的,我知道这是类似的事情,我只是不知道如何一气呵成。我喜欢可变的解决方案。谢谢 :) – Lsdafjklsd

相关问题