事件未在首页加载时加载,但在刷新后有效

2024-03-29

我正在创建一个名为员工管理系统的应用程序Rails 7。为了添加员工,我创建了一个表单。在这里,我使用nested-form-fields gem 来添加员工的联系人。问题是当第一次加载表单时,当我想添加或删除联系人字段时,它会重定向到同一表单。但是当我刷新页面时,它就开始工作,没有任何问题。即使添加或删除的字段也会反映在数据库中。仅在首次加载创建或更新员工页面时才会出现此问题。 我发现当我单击添加员工的链接时,表单将打开。事件不会以 html 形式加载。正如我们在下图中靠近 body 标签所看到的:

But after refresh, events are loaded: enter image description here

我在 gem 文件夹中看到了 js.coffee 文件,但这对于像我这样的初学者来说太高级了。那里的代码看起来像这样:

window.nested_form_fields or= {}

nested_form_fields.bind_nested_forms_links = () ->
  $('body').off("click", '.add_nested_fields_link')
  $('body').on 'click', '.add_nested_fields_link', (event, additional_data) ->
    $link = $(this)
    object_class = $link.data('object-class')
    association_path = $link.data('association-path')
    added_index = $(".nested_#{association_path}").length
    $.event.trigger("fields_adding.nested_form_fields",{object_class: object_class, added_index: added_index, association_path: association_path, additional_data: additional_data});
    if $link.data('scope')
      $template = $("#{$link.data('scope')} ##{association_path}_template")
    else
      $template = $("##{association_path}_template")
    target = $link.data('insert-into')

    template_html = $template.html()

    # insert association indexes
    index_placeholder = "__#{association_path}_index__"
    template_html = template_html.replace(new RegExp(index_placeholder,"g"), added_index)
    # look for replacements in user defined code and substitute with the index
    template_html = template_html.replace(new RegExp("__nested_field_for_replace_with_index__","g"), added_index)

    # replace child template div tags with script tags to avoid form submission of templates
    $parsed_template = $(template_html)
    $child_templates = $parsed_template.closestChild('.form_template')
    $child_templates.each () ->
      $child = $(this)
      $child.replaceWith($("<script id='#{$child.attr('id')}' type='text/html' />").html($child.html()))

    if target?
      $('#' + target).append($parsed_template)
    else
      $template.before( $parsed_template )
    $parsed_template.trigger("fields_added.nested_form_fields", {object_class: object_class, added_index: added_index, association_path: association_path, event: event, additional_data: additional_data});
    false

  $('body').off("click", '.remove_nested_fields_link')
  $('body').on 'click', '.remove_nested_fields_link', ->
    $link = $(this)
    return false unless $.rails == undefined || $.rails.allowAction($link)
    return false if $link.attr('disabled')
    object_class = $link.data('object-class')
    delete_association_field_name = $link.data('delete-association-field-name')
    removed_index = parseInt(delete_association_field_name.match('(\\d+\\]\\[_destroy])')[0].match('\\d+')[0])
    $.event.trigger("fields_removing.nested_form_fields",{object_class: object_class, delete_association_field_name: delete_association_field_name, removed_index: removed_index });
    $nested_fields_container = $link.parents(".nested_fields").first()
    delete_field = $nested_fields_container.find("input[type='hidden'][name='#{delete_association_field_name}']")
    if delete_field.length > 0
      delete_field.val('1')
    else
      $nested_fields_container.before "<input type='hidden' name='#{delete_association_field_name}' value='1' />"
    $nested_fields_container.hide()
    $nested_fields_container.find('input[required]:hidden, select[required]:hidden, textarea[required]:hidden').removeAttr('required')
    $nested_fields_container.trigger("fields_removed.nested_form_fields",{object_class: object_class, delete_association_field_name: delete_association_field_name, removed_index: removed_index});
    false

$(document).on "page:change turbolinks:load", ->
    nested_form_fields.bind_nested_forms_links()

jQuery ->
    nested_form_fields.bind_nested_forms_links()


#
# * jquery.closestchild 0.1.1
# *
# * Author: Andrey Mikhaylov aka lolmaus
# * Email: [email protected] /cdn-cgi/l/email-protection
# *
#

$.fn.closestChild = (selector) ->
  $children = undefined
  $results = undefined
  $children = @children()
  return $() if $children.length is 0
  $results = $children.filter(selector)
  if $results.length > 0
    $results
  else
    $children.closestChild selector

有什么可以改变的来解决这个问题吗?请帮忙!!


在我的应用程序上工作了 2 天后,当我将 jquery 添加到 application.js 以添加一个使永久地址和本地地址相同的复选框时,出现了同样的问题。所以我得出的结论是,问题不是因为 gem 而是因为其他原因。所以我用谷歌搜索,发现turbolink是罪魁祸首。在turbo-rails github存储库中搜索后,在“已关闭”类别中发现了该问题。通过在 application.html.erb 的 head 部分添加一个简单的行,了解了该问题。线路是:

<meta name="turbo-visit-control" content="reload">

不过,有一个问题。添加此行后,闪烁消息因重新加载而消失。于是我又去google了一下,希望找到更好的方法。删除了这一行,并在 application.js 中进行了更改

import "@hotwired/turbo-rails"

to

import { Turbo } from "@hotwired/turbo-rails"
Turbo.session.drive = false`

这是我在涡轮导轨中发现的自述文件.md https://github.com/hotwired/turbo-rails#navigate-with-turbo-drive。 并且无需刷新页面即可重新出现闪现消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件未在首页加载时加载,但在刷新后有效 的相关文章

随机推荐

  • 按版本对字符串列表进行排序

    我有一个字符串列表 每个字符串都遵循模式 Path UpdateTo Version Order 我需要对列表进行排序 使最低版本号位于顶部 如果存在多个具有相同版本号的文件 则附加一个可选的顺序参数 如果任何字符串上存在订单 那么它应该出
  • 以 cm 为单位调整图像大小 C#

    我有一个要求 要求提供 10 X 6 88 厘米的图像 我知道我不能简单地将厘米转换为像素 因为一个像素大小取决于用户显示分辨率 我想知道是否有办法调整图像大小以达到该尺寸 以厘米为单位 我还需要保留图像扩展名 例如 无法将其转换为 pdf
  • 在hive中如何将字符串转换为数组?

    我使用的是蜂巢1 1 hive gt select country from releases limit 1 OK us ca fr 目前 国家在 hive 中是字符串类型 如何将其转换为数组 String 我尝试了下面的方法 但它抛出错
  • Spring MVC 中的嵌套异常处理

    我收到以下错误 org springframework web util NestedServletException 请求处理失败 嵌套异常是 java lang NullPointerException 为了在控制器中处理这个问题 我使
  • 如何将钩子添加到 uberjar 进程中(使用 lein 构建)

    我想向 uberjar 进程添加一个钩子 具体示例是将 maxmind geoip dat 文件下载到资源文件夹中 以便每次部署时都会将更新版本捆绑到 jar 中 示例 建议表示赞赏 谢谢 我建议创建一个调用 uberjar 的自定义 le
  • 将查询结果从 BigQuery 导出到 Postgres

    我正在尝试导出 BigQuery 中的查询结果 并将数据导入 Postgres 数据可能多达 2 5 亿条记录 约 26Gb 选项1 将查询结果保存到临时表 将表导出为 csv 批量更新插入到 postgres 这会很慢 选项2 以某种方式
  • EhCache和数据库刷新

    我正在使用 Spring 和 ehcache 使用查询将数据填充到缓存中 此过程必须每 10 分钟发生一次 有配置可以设置吗 提前致谢 通常 ehCache 将用于给出一个 ttl 以自动使缓存失效 根据我从您的问题中收集到的信息 您要求每
  • 需要在SQL Server 2008中使用CTC来实现业务需求

    对小规模的实施会有很大的帮助SP以满足以下要求 业务规则是 EndDate 应该是下一个规则的开始日期 否则规则不应该是 视为连续的 并将被视为其他规则系列 如 在下面的示例中显示有两个系列 因为第四个系列 它已经打破了记录 RuleId
  • 如何使用 Fish shell 设置宝石路径?

    如何使用 Fish shell 正确设置宝石路径 sanoy nice system D c h bellevue gt gem 安装包 警告 您的 PATH 中没有 home sanoy gem ruby 2 2 0 bin gem 可执
  • 如何使用java/spring boot读取Vault kv

    我正在尝试弄清楚如何使用Hashicorp s Vault与弹簧靴 最初 我尝试遵循该指南 https spring io guides gs vault config scratch https spring io guides gs v
  • Xcode 8 不显示整个 NSLog 输出

    今天升级到 Xcode 8 GM 后 我注意到 NSLog 没有将整个日志消息打印到控制台 当处理下载大量信息的 API 时 这一点尤其明显 例如 REST API 从数据库下载所有产品 它只显示第一个产品的前 30 个键 其余信息被裁剪
  • 在 Ruby 中实现贝叶斯分类器?

    我想实现一个简单的贝叶斯分类系统来对短信进行基本的情感分析 欢迎在 Ruby 中实施的实用建议 除贝叶斯之外的其他方法的建议也将受到欢迎 Ilya Grigorik 在这篇博客文章中对这个问题有一个很好的答案贝叶斯分类器 http www
  • 为什么一个整型变量在赋值给另一个变量后仍然可以使用?

    我试图了解 Rust 中的所有权是如何运作的 考虑以下简单示例 let u own 3432 let d own u own println u own 编译器不会抱怨 尽管所有权来自值3432已移至d own 最后一条语句是println
  • OpenCV中求已知纵横比的矩形的距离

    我正在开发一个 OpenCV 程序来查找从相机到具有已知长宽比的矩形的距离 求出从前向视图看到的到矩形的距离效果很好 实际距离与计算出的距离非常接近 wtarget pimage d c 2 ptarget tan fov 2 Where
  • AngularJS - $cancelRequest 在 $resource 中不可用

    我正在尝试触发中止请求 但是我没有收到 cancelRequest对象的结果 resource 但是 我能够得到 promise and resolved对象 为什么会发生这种情况 我怎样才能得到这个 cancelRequest PS 我正
  • 尝试通过 SSH 连接到远程主机时出错

    我正在尝试连接到远程主机以发出命令 但在运行代码时收到以下错误消息 ssh 握手失败 ssh 没有通用的密钥交换算法 客户提供 电子邮件受保护 cdn cgi l email protectionecdh sha2 nistp256 ecd
  • Hive 函数替换列值中的逗号

    我有一个配置单元表 其中字符串列的值为 12 345 有没有什么方法可以在插入此配置单元表期间删除逗号的配置单元函数 您可以使用regexp replace string INITIAL STRING string PATTERN stri
  • vbscript 使用 Ccur 四舍五入到小数点后两位

    我在用CCur 代替CDbl 正如这个问题中的回答 vbscript 数学表达式不起作用 https stackoverflow com questions 13569944 vbscript mathematical expression
  • 如何在 JTextPane 中为文本和下划线设置不同的颜色?

    刚刚尝试为 JTextPane 中的文本着色 但问题是文本和下划线不能有不同的颜色 我应该怎么做或者这是否可能 下面的示例以红色打印所有文本和下划线 JTextPane pane new JTextPane StyleContext con
  • 事件未在首页加载时加载,但在刷新后有效

    我正在创建一个名为员工管理系统的应用程序Rails 7 为了添加员工 我创建了一个表单 在这里 我使用nested form fields gem 来添加员工的联系人 问题是当第一次加载表单时 当我想添加或删除联系人字段时 它会重定向到同一