Rails 在渲染后强制重新加载 javascript

2024-02-01

我在 Rails 应用程序中使用表单,最后在控制器中检查表单的内容是否正确,如果没有,我再次渲染页面,在错误之上解释

控制器的一部分

 if @insertion.save
          redirect_to @insertion
        else
          render 'new'
        end

在我看来,我已经用这一行来显示错误。

<% if @insertion.errors.any? %>
    <div id="error_explanation">
      <div class="alert alert-danger">
        The form contains <%= pluralize(@insertion.errors.count, "error") %>.
      </div>
      <ul>
        <% @insertion.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
<% end %>

问题是渲染后页面将不会再次加载我的 javascript 文件,因此视图不符合我的预期

渲染后如何强制重新加载js?

这是我的咖啡文件,由于 Turbolink

$(document).on "turbolinks:load", ->
  insertionJS = new Insertion()
  if $('.insertions.show').length > 0
    console.log("insertions.show")
    insertionJS.showJS() .....continue

通过 Turbolinks 的设计,JavaScript 和 CSS 不会重新加载,它将您的链接等转换为 XHR 请求,然后使用响应进行更新<body>并触发其特殊事件(也是为什么 jQuery$(function() { ... });Turbolinks 无法按预期工作。由于它执行 XHR,因此它根本不是真正的页面加载,即使它对于 Rails 控制器来说看起来像页面加载。

对于大多数情况你可以使用turbolinks:load像你展示的事件,但这不是 magix 解决方案,你仍然必须记住所有“旧”JavaScript 和 HTML 仍然存在,任何 JavaScript“全局变量”都不会被重置,等等。

如果您想在每个页面上重新加载/执行 JavaScript,只需从您的应用程序中删除 Turbolinks(Gemfile, application.js)。如果你为你的 CSS/JS 实现了正确的缓存头并且没有太多的 JS,那么性能差异并不是那么大。

如果您只是想出于某种原因禁用特定页面/链接/表单,您可以添加data-turbolinks="false"属性 https://github.com/turbolinks/turbolinks#disabling-turbolinks-on-specific-links到链接。请记住,这需要位于指向该页面的链接上,而不是页面本身。为了让页面本身真正重新加载,你可以这样做location.reload(),但请记住,这是在渲染/重定向之后完全单独的页面重新加载。

如果你真的想强制 JavaScript 重新加载,你可以插入另一个<script>动态地进入 head,但记住你原来的 JavaScript仍在加载中,所以这可能会很痛苦。

我要指出的是,Turbolinks 实际上相当大且复杂,因此值得阅读它自己的文档,而不仅仅是 Rails 中的小片段。https://github.com/turbolinks/turbolinks https://github.com/turbolinks/turbolinks

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

Rails 在渲染后强制重新加载 javascript 的相关文章

  • browserify 错误 /usr/bin/env: 节点: 没有这样的文件或目录

    我通过 apt get install 安装了 node js 和 npm 以及所有依赖项 然后安装了 browserify npm install browserify g 它完成了整个过程 看起来安装正确 但是当我尝试为此做一个简单的捆
  • 如何从 URL 字符串中删除某些参数?

    我有这个var存储表示充满参数的 URL 的字符串 我正在使用 AngularJS 我不确定是否有任何有用的模块 或者可能使用纯 JavaScript 来删除不需要的 URL 参数而无需使用正则表达式 例如我需要删除 month 05并且
  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • 禁用任何类型的浏览器窗口滚动?

    有没有办法禁用滚动 不仅仅是滚动条 还有浏览器窗口的全部功能 根据您对 Keit 的回答 您不想在打开灯箱时滚动处于活动状态 如果是这种情况 您可以使用以下 css 在打开灯箱的同时向正文添加一个类 这个解决方案的好处是它保留了滚动 空间
  • 全局定义的 AngularJS 控制器和封装

    根据 AngularJS 的教程 控制器函数仅位于全局范围内 http docs angularjs org tutorial step 04 http docs angularjs org tutorial step 04 控制器函数本身
  • 每当 gem 仅在一台机器上有 cronjob 时?

    我们大规模部署了大约十几台服务器 我们想使用每当 gem 但我无法找到一种方法来说明 cron 作业应该在哪台机器上进行 我们只希望这些作业在执行后台作业的服务器上运行 有没有办法指定这一点 如果您使用 Capistrano 部署项目并使用
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • 对 Rails 3.1 中的特定路由强制使用 SSL

    我需要强制启用 SSL所有路线在我的申请中除了landing index In config application rb 我有 config force ssl true Then in landing controller rb 我有
  • 在 中动态添加链接样式表 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如何将链接
  • 响应式菜单:悬停子菜单显示错误

    简而言之 我根据教程创建了一个响应式菜单 当您将鼠标悬停在投资组合按钮上时 菜单应该显示子菜单 而在移动模式下 您需要按该按钮才能显示子菜单 效果很好 问题是该教程有一个错误 如果您在桌面模式下按组合按钮 子菜单将不会再次显示 除非您按 单
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如
  • 如何在 jQuery 中检查复选框是否被选中?

    我需要检查checked复选框的属性 并使用 jQuery 根据选中的属性执行操作 例如 如果age复选框被选中 然后我需要显示一个文本框来输入age 否则隐藏文本框 但下面的代码返回false默认情况下 if isAgeSelected
  • jQuery fadeOut 一个 div,fadeIn 另一个 div 在其位置

    我正在尝试一个简单的 jQuery 脚本来淡出一个 div 并淡入另一个 div 但由于某种原因 第一个 div 永远不会淡出 这可能是代码的一个明显问题 但我似乎无法弄清楚 div div div div
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界
  • 使用 stopPropagation() 处理 React 事件委托

    我有一个 React 项目 应该可以放置在任何网站上 我的想法是 我托管一个 javascript 文件 人们放置一个具有特定 ID 的 div 然后 React 在该 div 中进行渲染 到目前为止 除了点击事件之外 这是有效的 这些事件
  • simple_fields_for 没有出现 [rails 4]

    我正在尝试创建两个隐藏字段 其中一个显示没有问题 但来自嵌套表单的另一个则没有 产品 rb class Product lt ActiveRecord Base has many product options dependent dest

随机推荐

  • 阻止访问静态内容文件夹

    我想知道如何阻止访问我的网络应用程序中的静态内容文件夹 右边的文件夹位于 war 中的 web root 文件夹内 像这样 myapp css js swf WEB INF 我希望内容仅在用户处于会话中时从应用程序中可见 如果有人在他 她的
  • 如何在 JavaScript 中四舍五入为整数?

    我有以下代码来计算一定的百分比 var x 6 5 var total total x 15 100 Result 43 3333333333 我想要的结果是确切的数字43如果总数是43 5它应该四舍五入到44 有没有办法在 JavaScr
  • 检索 WMI Win32_Processor.Family 属性的描述性值而不是索引

    下面的简单 VBS 示例从 WMI 检索 CPU 标题 体系结构和系列 s For Each Item In GetObject winmgmts impersonationLevel impersonate Root CIMV2 Inst
  • SonarQube 4.3.2 Javascript 排除 [重复]

    这个问题在这里已经有答案了 我们在 Java 项目中使用 SonarQube 版本 4 3 2 我们想要排除当前正在分析的所有 javascript 文件 我们尝试在排除列表中使用 js 进行排除 但没有成功 请帮忙 In your son
  • [外设maximumWriteValueLengthForType:CBCharacteristicWriteWithResponse]返回什么?

    我正在运行以下代码 peripheral maximumWriteValueLengthForType CBCharacteristicWriteWithResponse 就我而言 iPhone 7 iOS 10 0 2 它返回 512 这
  • jPlayer - 通过页面重定向保存用户设置

    我已经关注这个问题好几天了 我无法让它发挥作用 希望有人可以帮助我并指出我正确的方向 使用 jPlayer http jplayer org http jplayer org 我需要将 cookie 设置为以下内容 以便当用户返回该网页时
  • iPhone 802.11 扫描

    我正在开发一个室内位置使用 wifi 的系统 但是我在使用苹果库时遇到了问题 曾经是私人的 现在是公共的 我在哪里使用代码 libHandle dlopen System Library SystemConfiguration IPConf
  • MacOS 上使用 clang-15 时 FindTerminfo 中的 CMake 错误

    我在我的项目中使用 llvm 并使用 cmake 找到它find package LLVM REQUIRED CONFIG 配置失败并显示消息 cmake CMake Error at Applications CMake app Cont
  • jestjs - 如何在 ci 中参数化 cli 的测试执行?

    我有4个环境 dev 开发者区 测试 测试区 preprod 预生产环境 生产 生产环境 这些环境需要不同的配置来执行测试 不同的 url 用户名 资产等 如何在持续集成中将它们的配置作为参数传递给 jest 正如你所读到的here htt
  • Java 线程转储总结工具

    我有时必须查看 Tomcat 服务器的线程转储 然而 这是一个非常慢的过程 因为我的应用程序使用具有数百个线程的线程池 我查看的大多数线程转储都包含许多线程的相同堆栈跟踪 因为它们处于空闲等待工作状态 是否有任何工具可以解析线程转储并仅向我
  • eXist-db 在 .xq 数据中包含 html 模板

    我有一个 index html 数据 我通过以下方式包含了模板 div 在索引 html 站点中 我包含了一个关键字搜索表单 其想法是当我单击搜索按钮时 它应该调用 xq 文件来请求搜索结果 div
  • Pandas 跨多列进行代表性采样

    我有一个代表人口的数据框 每一列表示该人的不同品质 特征 我怎样才能获得该数据框 人口的样本 它代表了整个人口的所有特征 假设我有一个代表 650 人的员工队伍的数据框 如下所示 import pandas as pd import num
  • 我可以让 RSpec 只运行更改后的规格吗?

    我有一个非常大的项目 约 3800 个单独示例 的测试套件 我正在将其从 RSpec 2 14 更新到 3 6 我刚刚运行了全部替换s be true be true 但其中一些应该be truthy相反 这些规格是失败的 我可以从中提取更
  • 应用程序栏上的按钮 (WP7)

    If you open settings of wifi and choose any network you will see Password textbox and BUTTONS not icons in ApplicationBa
  • 如何将 Q.all() 与复杂的承诺数组一起使用?

    考虑我有一系列对象和承诺 例如 a 1 a 4 a 4 promiseSend Function valueOf Function promiseSend Function valueOf Function 现在什么时候打电话给我Q all
  • 什么时候在jstl中使用requestScope?

    jstl 变量在 jsp 的请求范围内设置
  • rownames_to_column 在 rowwise() 后无法正常工作

    我有这个 df df lt structure list a 1 5 b 6 10 c 11 15 d c a b c d e e 1 5 row names c NA 5L class c tbl df tbl data frame a
  • SQL - 查询获取服务器的IP地址

    SQL Server 2005 中是否有查询可以用来获取服务器的 IP 或名称 SELECT CONNECTIONPROPERTY net transport AS net transport CONNECTIONPROPERTY prot
  • 紧凑的 MATLAB 矩阵索引表示法

    我有一个 n k 大小的矩阵 每行包含 k 个数字 我想使用这 k 个数字作为 k 维矩阵的索引 在 MATLAB 中是否有任何紧凑的方法可以做到这一点 或者我必须使用 for 循环 这就是我想要做的 在 MATLAB 伪代码中 但以更 M
  • Rails 在渲染后强制重新加载 javascript

    我在 Rails 应用程序中使用表单 最后在控制器中检查表单的内容是否正确 如果没有 我再次渲染页面 在错误之上解释 控制器的一部分 if insertion save redirect to insertion else render n