在rails中使用嵌套表单进行Woking

我有3个型号

公司
has_many:部门

部门
has_many:角色
belongs_to公司

角色
belongs_to:department

我正在尝试创建一个动态页面,其中包含公司名称,用户动态添加的n个部门( 按照按钮单击呈现相同的部分 )和每个部门内的n个角色( 按照按钮单击呈现相同的部分 )。 我想打个电话

form_for :company do |f| 

= department_partial(按用户呈现n次),包含部门表单

 form_for :department do |f| 

= role_partial(按用户呈现n次),包含角色表单

 form_for :role do |f| 

这样当我点击保存一次以调用CompaniesController #Create时

我得到了类似的参数

{“company”=> {“name”=>“somename”,
“department1”=> {“name”=>“somename”,“role”=> [{“name”=>“R1”},{“name”=>“R2”}]},
“department2”=> {“name”=>“somename”,“role”=> [{“name”=>“R1”},{“name”=>“R2”},{“name”=>“ R3″ }]}}

注意

1>每个部门可能会重复相同的角色,但不同的部门是明智的。
2>单击“保存”之前没有保存任何内容

请检查nested_form gem

可能你的视图看起来像这样:

 <%= nested_form_for @company do |comp| %>  <%= comp.fields_for :departments do |department| %> <%= department.text_field :name %> <%= department.fields_for :roles do |role| %>  <% end %> <% end %> <% end %> 

看一下这个示例代码 。 这将有助于你:)检查以下railscastvideo:

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2