使用nested_forms gem管理remove_nested_fields按钮上的click事件

时间:2017-07-07 16:23:12

标签: javascript ruby-on-rails ruby nested-forms

我需要做的只是增加" p"每次按下添加按钮时标记或减少相同的值" p"标记删除按钮。

好吧,嵌套表单使用partial来添加一个新行来管理de main表单视图里面的嵌套表单这里是我的部分代码:

:order

在我的主视图中,使用以下代码渲染此部分:

<tr class="fields">
 <td>
    <%= f.text_field :nombre, class: 'form-control' %>
 </td>
 <td>
    <% 
        concat f.select :idtipodocumento, CrTipoDocumento.all.collect 
        {|p| [ p.nombre, p.id ] }, {prompt: 'Seleccione el tipo de 
        documento'}, :class=>'form-control'
    %>
 </td>
 <td>
    <%= f.text_field :documento, class: 'form-control' %>
 </td>
 <td>
    <%= f.link_to_remove raw('<i class="fa fa-minus-circle" aria-
     hidden="true"></i>'), :class =>'btn btn-danger' %>
    </td>
 </tr>

我还有添加按钮来添加新的行,效果很好:

         <tbody>
            <fieldset id="acreditados">
              <%= f.fields_for :cr_acreditados, :wrapper => false %>
            </fieldset>
         </tbody>

我使用javascript来更新&#34; p标签&#34;文本每次按下添加按钮或按下删除按钮时,添加按钮的javascript工作正常!这是代码:

      <div id="addBtn">
        <% if @counter >= 1 %>
          <p><%= f.link_to_add raw('<i class="fa fa-plus-circle" aria-
        hidden="true"></i>'), :cr_acreditados, id: 'btna', :class => 
        'btn btn-primary lta', "data-target" => "#DAC" %></p>
        <% else %>
          <p class="text-center"><h3>No dispone de mas 
          acreditaciones</h3></p>
        <% end %>
      </div>

我希望删除按钮执行相反的操作,这将是+#p;标记&#34;文本,事情是,javascript代码无法检测新添加的行上的点击事件,但他在视图加载时检测到从数据库加载数据的行,这是我删除按钮的实际js代码:

$( document ).ready(function() {
   $('.add_nested_fields').click(function(adLine){
      var cnt = document.getElementById('acd').innerHTML;
      if(cnt <= 1){
          if(cnt == 0)
          {
              alert("You cant add more rows")
              adLine.preventDefault();
              adLine.stopPropagation();
          }
          else
          {
              var res = cnt - 1;
              $('#acd').html(res);
          }
       }
       else{
             var res = cnt - 1;
             $('#acd').html(res);
       }
   });
});

1 个答案:

答案 0 :(得分:0)

做到了!只需挖掘一下gem的官方文档: https://github.com/ryanb/nested_form

他甚至做了一种计算和限制字段最大值的方法!链接在这里: https://github.com/ryanb/nested_form/wiki/How-to:-limit-max-count-of-nested-fields