首页 > 解决方案 > 将附加字段动态添加到 rails 表单

问题描述

看到一些教程,我尝试构建一些嵌套表单,并选择在单击添加按钮时动态添加字段。我在这里是全新的,发现很难解决问题,因为我的代码不起作用,也没有给出任何错误!这是表格

<%= form_for [@project, @feature], class: "form-group inline", remote: true  do |builder| %>

    <%= builder.fields_for :tasks, remote: true do |form| %>
      <%= render "task_fields", f: form %>
    <% end %>

    <%= link_to_add_fields "Add Field", builder, :tasks %>

    <%= builder.submit class: "btn btn-primary m-2" %>

<% end %>

应用程序辅助方法link_to_add_fields是->

  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(association.to_s.singularize + "_fields", f: builder)
    end
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
  end

而js代码是->

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

问题是那里没有显示错误,但什么都不做(只执行 href="#" 操作)。如何实现功能,以便我可以将字段动态添加到嵌套表单

标签: ruby-on-railsformsruby-on-rails-5associations

解决方案


它实际上仅适用于那些依赖项application.js

//= require jquery
//= require jquery_ujs

推荐阅读