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

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(使用前将#替换为@)

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

  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • 在 jQuery 中获取 SELECT 的值和文本[重复]

    这个问题在这里已经有答案了 可能的重复 获取选择框中选定选项标签的值 https stackoverflow com questions 7380604 getting the value of the selected option ta
  • 如何将 STRUCT - OR - JSON 传递给 Coldfusion CFC 方法

    我有一个现有的 CFC 在将结构传递到方法中时可以正常工作 问题是 我们现在还需要通过 JSON 将数据传递到同一函数中 这是 CFC 片段
  • 自调用函数未定义

    如果我声明一个函数文字 var x function alert hi console log x returns the function code However var x function alert hi console log
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • 如何按 Angular 表中的属性(该属性具有单个 rownspan)进行分组?

    我没有找到这个问题的合适标题 我的问题是 例如 我有一个包含两列的表 列汽车品牌和列汽车型号 我希望表是 like in this picture 换句话说 品牌名称只会出现 1 次 我的输入数组采用以下 json 格式 brand Aud
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • Riak 在 MapReduce 查询中失败。使用哪种配置?

    我正在与 riak riak js 结合开发一个 nodejs 应用程序 并遇到以下问题 运行此请求 db mapreduce add logs run 正确返回存储在存储桶日志中的所有 155 000 个项目及其 ID logs 1GXt
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 引用自身的 Javascript 对象...有问题吗?

    由于 Javascript 允许通过引用分配复合值 因此如果 Javascript 对象引用自身 它将创建无限的引用集 如控制台中所示 这看起来像是某种无限循环 但 Chrome 似乎没有问题 这样做是否存在任何内存问题或其他风险 就记忆力
  • 在 Android Chrome 中隐藏 HTML5 音频/视频通知

    我的网络应用程序上有一个 HTML5 音频元素 在某些时候 我使用以下代码以编程方式停止播放 audioElement pause audioElement currentTime 0 播放音频时 我的 Android 设备 使用 Goog
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 意外的令牌:尝试解析 JSON 字符串时

    我正在尝试解析这个 JSON 字符串 RESULTS name Thessaloniki GR type Sailing l sailing weather beach Porto 20Carras 20Marina 45904 name
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • JQuery UI:将长元素放在光标位置而不是元素的中间

    我有一些很长的可拖动元素 可以将它们放入背景表的所有单元格中 当我开始拖动此类元素并将其悬停在可放置容器 表格的单元格 上时 了解元素将被放置到何处的 热点 点是其自身的中间 不幸的是 我的元素的中间通常不可见 并且将元素放在正确的位置是没

随机推荐

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

    我有一个字符串列表 每个字符串都遵循模式 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 来添加员工的联系人 问题是当第一次加载表单时 当我想添加或删除联系人字段时 它会重定向到同一