【问题标题】:How to set index of ajax appended nested fields_for form如何设置ajax附加嵌套fields_for表单的索引
【发布时间】:2016-06-03 04:16:58
【问题描述】:

您好,我有一个带有 fields_for skill_of_objects 嵌套属性的 character 表单。

一些技能是根据需要添加到角色的固定数量的skills_of_objects生成的。像这样的循环会正确生成输入名称和 id 值。

<input value="224" type="hidden" name="character[skill_of_objects_attributes][0][skill_id]" id="character_skill_of_objects_attributes_0_skill_id" />
<input value="23" type="hidden" name="character[skill_of_objects_attributes][1][skill_id]" id="character_skill_of_objects_attributes_1_skill_id" />
<input value="248" type="hidden" name="character[skill_of_objects_attributes][2][skill_id]" id="character_skill_of_objects_attributes_2_skill_id" />

等等……只要在主迭代中完成,它就会给出正确的索引号。

但是当我让 ajax 追加 fields_form 时,我正在创建新的 f builder:

<%= form_for [current_user, @character] do |f| %>
  $('#skill_list').append("<%= j render partial: 'add_skill', locals: { character: @character, skill: @skill, f: f } %> ");
<% end %>

伴随着这个我失去了正确的索引值,并且附加的部分生成了索引为 0 的输入:

<input value="244" type="hidden" name="character[skill_of_objects_attributes][0][skill_id]" id="character_skill_of_objects_attributes_0_skill_id" />

问题:

如何设置此输入字段的正确值。

【问题讨论】:

  • 表单没有循环,所以它只通过部分发送一个值。您是否在表单中使用循环?这可能就是答案。
  • 我只对附加表单使用部分,因为我需要,显示不同的静态表单。

标签: ruby-on-rails ajax fields-for


【解决方案1】:

我在我的咖啡脚本操作中以条带化索引值结束:

name = $('#skill_list li.skill:last input').attr('name')
  index = name.replace /[^0-9]/g, ''

我将它作为参数传递,递增它,并在我的附加部分中生成正确的idname

%li.skill{ id: "skill_#{skill.name_pl.squish.tr(' ','_')}"}
  = f.fields_for :skill_of_objects, character.skill_of_objects.build do |ff|
    %strong
      = skill.name_pl
    = ff.hidden_field :skill_id, value: skill.id, name: "character[skill_of_objects_attributes][#{index}][skill_id]", id: "character_skill_of_objects_attributes_#{index}_skill_id"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多