联合3.2

问题描述:

我试图创建fields_for块的组合和非fields_for块形式:联合3.2

但输出被重复,看起来像他们循环。 ..

也许是因为,有一个fields_for块,另一个不是fields_for /表单。

我该如何将它们中的两个结合在我的<tbody><tr>标记中。

<% @annual_procurement_plan.project_procurement_management_plans.each do |ppmp| %> 
    <% ppmp.items.each do |itemx| %> 
    <tbody> 

     <%= f.fields_for :project_procurement_management_plans do |p| %> 
      <%= p.fields_for :items do |item| %> 
       <tr class="nested-fields info"> 
       <td> 

       <%= item.select :category_id, Category.all.map{|c| [c.code, c.id]}%> 
      </td> 
            

      <td> 
         <%= content_tag :span, itemx.description%> 
        </td>  

      <td><%= p.text_field :pmo_end_user%> 
        </td> 

     </tr> 
     <% end %> 
     <% end %> 
    </tbody> 
    <% end %> 
<% end %> 

任何解决方法将不胜感激。谢谢。

+0

可以请您详细说明吗?也许你可以列出整个表格和模型。 – 2013-04-18 06:31:04

+0

你的模型heirarchy的大纲将有所帮助,以及究竟是什么问题。 “循环”是什么意思? – 2013-04-18 07:12:14

将在您的fields_for以猜测你的模型层次结构是annual_procurement_plan有很多project_management_procurement_plans,并project_management_procurement_plan有许多items迭代项目这样

f.fields_for :project_procurement_management_plans, ppmp do |p| 
+0

感谢您提供一个简短的解决方法。现在工作正常。 – xirukitepe 2013-04-18 07:56:29

,形式的一般结构应该是这样的:

<% @annual_procurement_plan.project_management_procurement_plans.each do |ppmp| %> 
    <%= f.fields_for(:project_management_procurement_plans, ppmp) do |ppmp_f| %> 
    # any fields for the ppmp 

    <% ppmp.line_items.each do |item| %> 
     <%= ppmp_f.fields_for(:line_items, item) do |item_f| %> 
     # any fields for the line_item, eg 
     <%= item_f.select :category_id, Category.all.map{ |c| [c.code, c.id] } %> 

     <% end %> 
    <% end %> 

    <% end %> 
<% end %> 

在每一种情况下,你遍历关联的每个对象,并为每个对象的,你打电话fields_for(将关联用作第一个参数,将实际对象用作第二个参数)。因此,您通过ppmp s循环,为其中的每个呼叫fields_for,然后在每个ppmp内循环遍历所有line_items,为其中的每个呼叫fields_for

确保当您添加在该领域的使用(为pmpp领域即item_fline_item领域,并pmpp_f)正确的表单生成器。