2013-04-18 2 views
0

Я пытаюсь создать форму с комбинацией fields_for блока и не fields_for блока:Сочетание fields_for блока и не блок fields_for в Rails 3.2

Но выходы повторяют, и похоже, они зацикливание. ..

Возможно, потому что есть блок fields_for, а другой - не поля_формы/формы.

Как скомбинировать два из них внутри тега <tbody>10 или <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

не могли бы вы уточнить больше? Возможно, вы также можете перечислить всю форму и модели. –

+0

Конспект вашей иерархической модели поможет, а также точно, в чем проблема. Что вы подразумеваете под «петлей»? –

ответ

0

Поместите предмет итерации в вашем fields_for как этого

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

Благодарим вас за краткое обходное решение. Теперь он работает нормально. – xirukitepe

0

Принимая предположение, что ваша модель иерархии является annual_procurement_plan имеет много project_management_procurement_plans и project_management_procurement_plan имеет много items, общая структура формы должна быть что-то вроде этого :

<% @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 для каждого из них.

Убедитесь, что при добавлении поля в том, что вы используете правильную форму строитель (то есть. item_f для line_item полеев и pmpp_f для pmpp полеев).

Смежные вопросы