【问题标题】:Mantaining an array and some nested form fields consistent?保持数组和总和嵌套表单字段一致?
【发布时间】:2016-12-07 15:24:15
【问题描述】:

我正在使用 cocoon 来处理一些表单字段,但我需要在页面其他地方使用活动表单字段的值,特别是在其他地方使用的数组上;所以我需要用数组填充表单字段,当一个更改时,更改另一个。

我目前正在做的是,每当修改数组时,我都会删除所有表单字段,再次添加它们,但是我无法通过索引访问它们,当一个被更改时我不确定如何捕捉更改并修改实际索引,考虑到 cocoon 处理插入和删除的方式,索引与显示的内容不一致。

添加代码供参考:

我有这个功能来清除表格,制作新表格,但无法从 field_coords 数组中填充,因为我不确定如何实际访问 form_fields。

function redo_forms(){
  $('.remove_point').each(function() {
    $(this).trigger('click');
  });
  for(i=0; i < field_coords.length; i++){
    $('.add_point').trigger('click');
    //add data here
  };
}

表格本身定义为:

<tbody>
    <%= f.fields_for :points do |point| %>
        <%= render 'admin/shared/point_fields', {:f => point} %>
    <% end %>
    <tr id='new_point'>
        <td colspan="3">
            <%= link_to_add_association t(:add_points), f, :points, {'data-association-insertion-method' => 'before', 'data-association-insertion-node' => '#new_point', :partial => 'admin/shared/point_fields', :class => 'add_point'} %>
        </td>
    </tr>
</tbody>

和:

<tr class='nested-fields'>
  <td><%= f.text_field :lat, :class => 'coordinate_lat span8' %></td>
  <td><%= f.text_field :lng, :class => 'coordinate_long span8' %></td>
  <td><%= link_to_remove_association t(:remove_point), f, :class => 'remove_point' %></td>
</tr>

【问题讨论】:

  • 能否添加您的代码以供参考。

标签: javascript jquery ruby-on-rails cocoon-gem


【解决方案1】:

您是否尝试过使用脏函数代替.click?

我觉得点击会发送一条空白记录,因为它会点击,你的事件触发什么都不发送,然后用户输入值。

另外,您是否有理由不将控制器设置为保存您正在清除和重新输入的信息?

【讨论】:

  • 我使用 .click 是因为我认为创建字段然后给它一个值的部分方法类似于 .click 然后访问创建的表单并设置它的值,但我不能找不到访问它的方法。至于为什么我没有设置控制器来保存数组;虽然我最初确实将原始点集从控制器复制到 javascript 客户端代码,但我没有意识到我可以设置一个 ajax 请求来更新数据;我想这可能行得通,但它似乎有点过分,也许。
  • 我不是很精通,否则我会引导你完成它 - 但我关注了一些博客 - Dirty Explaination 并从上周保存了一个我尚未安装的 jquery gem - gem.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2012-09-06
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多