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

时间:2015-01-15 06:29:45

标签: ruby-on-rails

我有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 - ;单击保存

之前没有保存任何内容

1 个答案:

答案 0 :(得分:1)

请检查nested_form gem

可能你的观点看起来像这样:

<%= nested_form_for @company do |comp| %>

   <!--  pick the company attributes --> 

   <%= comp.fields_for :departments do |department| %>
      <%= department.text_field :name %>

      <%= department.fields_for :roles do |role| %> 
          <!-- Pick your role attributes  --> 
       <% end %>

    <% end %> 
<% end %>

看看这个example code。这会帮你:) 检查以下railscast视频:

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

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