Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 4_Nested Forms_Nested Attributes - Fatal编程技术网

Javascript 以嵌套形式动态生成的字段添加了两次Rails

Javascript 以嵌套形式动态生成的字段添加了两次Rails,javascript,jquery,ruby-on-rails-4,nested-forms,nested-attributes,Javascript,Jquery,Ruby On Rails 4,Nested Forms,Nested Attributes,我有两种型号,第一种是授权,第二种是规格。Specs有两个字段:不合格和合格,并嵌套在grants中。我几乎所有的设置都很好,但我需要帮助修改JQuery,因为每次单击“添加不合格项”,也会添加合格项。它没有显示在窗体上,但在我的“显示”视图中它确实显示为一个空白项目符号。当我回到编辑窗体时,我看到了空白字段的资格。如果我在两个字段中输入新文本,则会保存正确的文本。我希望能够添加一个字段而不自动添加另一个字段。我的jQuery和助手代码来自RailsCastPro#196嵌套模型表单。我是rai

我有两种型号,第一种是授权,第二种是规格。Specs有两个字段:不合格和合格,并嵌套在grants中。我几乎所有的设置都很好,但我需要帮助修改JQuery,因为每次单击“添加不合格项”,也会添加合格项。它没有显示在窗体上,但在我的“显示”视图中它确实显示为一个空白项目符号。当我回到编辑窗体时,我看到了空白字段的资格。如果我在两个字段中输入新文本,则会保存正确的文本。我希望能够添加一个字段而不自动添加另一个字段。我的jQuery和助手代码来自RailsCastPro#196嵌套模型表单。我是rails新手,尤其是jQuery,因此非常感谢您的帮助

jQuery ->
$('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()
和助手方法:

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

我想把我的解决方案分享给任何想做同样事情的人。我犯的错误是认为我可以在每个模型中有几个字段,但只能将其中一个字段保存到数据库中。但每次我添加一个字段时,它都会将整个记录与所有其他字段一起保存,即使这些字段为空。这就是为什么每次我添加资格时,我也会得到一个空白的“不合格”字段。解决方案是分解模型并为每个需要的字段创建新模型

因为我真正的目标只是列出合格和不合格的列表,所以我想出了另外两个简单处理格式的解决方案。第一种是使用富文本编辑器,另一种是使用.gsub在事件发生后添加格式。例如:

<p>
  <strong>Eligibility:</strong>
  <%= (@grant.eligibility).gsub(/[=+~]/, '=' => '<ul>','~' => '</ul>', '+' => '<li/>').html_safe %> 
</p>

资格:
    ”、“~”=>“
”、“+”=>”
  • )。html\u safe%>