Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript rails链接到添加字段以嵌套形式将每个字段添加两次_Javascript_Jquery_Ruby On Rails_Forms_Nested Forms - Fatal编程技术网

Javascript rails链接到添加字段以嵌套形式将每个字段添加两次

Javascript rails链接到添加字段以嵌套形式将每个字段添加两次,javascript,jquery,ruby-on-rails,forms,nested-forms,Javascript,Jquery,Ruby On Rails,Forms,Nested Forms,我正在创建一个包含三个模型的嵌套表单。先是grants模型,然后是两个嵌套模型:Spec和SubSecs。Spec和SubSec都有合格和不合格字段。我相信我已经正确地设置了模型和关联,但是当我尝试使用jQuery动态添加新字段时,我的问题就出现了。我添加到资格中的任何字段也会将空白字段添加到非资格中。它没有显示在表单上,但当我查看显示页面时,我看到了它 资格 A 不合格 B 结果将是(x为空): 资格 A x 不合格 x B 当返回到编辑页面时,现在每个x都有一个空白字段。我假

我正在创建一个包含三个模型的嵌套表单。先是grants模型,然后是两个嵌套模型:Spec和SubSecs。Spec和SubSec都有合格和不合格字段。我相信我已经正确地设置了模型和关联,但是当我尝试使用jQuery动态添加新字段时,我的问题就出现了。我添加到资格中的任何字段也会将空白字段添加到非资格中。它没有显示在表单上,但当我查看显示页面时,我看到了它

资格

  • A
不合格

  • B
结果将是(x为空):

资格

  • A
  • x
不合格

  • x
  • B
当返回到编辑页面时,现在每个x都有一个空白字段。我假设这是我的应用程序助手中的一个错误,每次在表单的一个部分中使用link_to_add_字段时,它都会触发在另一个部分中创建字段。有趣的是,如果我回去编辑和填写空白字段,他们将保留新的条目。它只是强迫我在每个部分都有相同数量的要点,而我不想要

module ApplicationHelper
  def link_to_add_fields(name, f, association)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(name.to_s.singularize + "_fields", f: builder)
    end
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
  end
还有我的表格

<%= form_for(@grant) do |f| %>
<div class="field">
    <%= f.label :overview %><br>
    <%= f.text_area :overview %>
  </div>

<h2> Eligibility </h2>
  <%= f.fields_for :specs do |builder| %>
    <%= render 'eligibility_fields', f: builder %>
     <% end %>
     <%= link_to_add_fields "eligibility", f, :specs %>

<h2> Ineligibility </h2>
<%= f.fields_for :specs do |builder| %>
    <%= render 'ineligibility_fields', f: builder %>
     <% end %>
     <%= link_to_add_fields "ineligibility", f, :specs %>

我是rails的新手,尤其是jQuery,希望您能提供帮助

那不是咖啡脚本吗?那不是咖啡脚本吗?
<fieldset>
  <%= f.label :eligibility, "Eligibility" %><br />
  <%= f.text_area :eligibility %><br />
  <%= f.label :_destroy, "Remove Eligibility" %>
  <%= f.hidden_field :_destroy %>
  <%= link_to "remove", '#', class: "remove_fields" %>
  <%= f.fields_for :subspecs do |builder| %>
  <%= render 'subeligibility_fields', f: builder %>
    <% end %> 
  <%= link_to_add_fields "subeligibility", f, :subspecs %>
</fieldset>
jQuery ->
  $('form').on 'click', '.remove_fields', (event) ->
    $(this).prev('input[type=hidden]').val('1')
    $(this).closest('fieldset').hide()
    event.preventDefault()

  $('form').on 'click', '.add_fields', (event) ->
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()