问题标签 [rails-ujs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 找不到类型为“application/javascript”的文件“rails-ujs”(页面加载)
使用 devise for auth 创建了一个 Rails 5 应用程序,并尝试为论坛添加 Thredded gem。
预期行为
该应用程序应在http://localhost:3000加载。
实际行为
服务器启动后,以下消息会显示在应用程序所在的 chrome 浏览器中。
找不到类型为“application/javascript”的文件“rails-ujs”
谢谢你。
ruby-on-rails - 升级后的 Rails 5.1.4 Ajax 问题
在我的 account.js.coffee 上,我有这个来查看是否调用了 Ajax 事件。
结尾
当我远程提交我的表单时,应该触发一个 Ajax 事件,如果有错误应该触发 Ajax 错误,或者当对象被更新时触发 Ajax:success; 但是当表单出现错误时触发Ajax成功(当属性必须存在时为空属性),并且当对象成功更新时不会触发Ajax。该表单具有 remote:true 属性,并且在 application.js.coffee 上我有 jQuery、rails-ujs。我收到 ajax:error 事件的唯一一次是我故意从 update.js.erb 页面中删除对象以查看 Ajax:error 是否被触发。当 rails 在 4.2 上(更新之前)一切正常:(
这是我在表单上出现错误时在控制台上收到的事件。CustomEvent {isTrusted: false, detail: Array, initCustomEvent: function, type: "ajax:success", target: , ...}
更新.js.erb
到目前为止,我发现如果您在引导程序(版本 3)模式中插入表单,那么当您点击提交表单(远程:true)并且它成功时,ajax:success 回调将不会被触发。如果对象因为错误而回滚(属性不能为空),那么 ajax:success 它就是触发器。当我在 accounts/edit.html.haml 上使用表单时,我的 Jquery 验证被触发,并且 ajax:success 在对象更新时也被触发。谢谢你的帮助。
ruby-on-rails-5 - rails-ujs 在 Safari 中不起作用
form_with
我使用诸如打击之类的助手实现了一个表单。
在Javascript中..
Chrome 和 Firefox 都可以正常工作,但 Safari 不能正常工作。
Safari 不支持request.readyState = XMLHttpRequest.OPENED
. 所以 rails-ujs 不会在 Safari 中发送 ajax。
rails-ujs
不支持 Safari 浏览器?谢谢。
环境
- 红宝石'2.4.3'
- 动作视图(= 5.1.4)
- Safari 11.0.2 (13604.4.7.1.3)
ruby-on-rails - 谷歌标签管理器干扰 Rails UJS 远程:真
我将 GTM 包含在我<head>
的以下内容中:
并且在<body>
与
在我的页面上,我有一个link_to
使用 rails-ujs 从数据库中删除图像的助手。
当我从页面中删除 GTM 代码时,删除链接按预期执行。
但是,使用 GTM 代码后,单击该链接会在尝试发出 GET 请求时导致路由错误。
No route matches [GET] "/..."
在我看来,GTM 正在干扰 rails-ujs,但我不确定最好的方法来解决这个问题。
编辑:我已经尝试使用和不使用 turbolinks:load 侦听器的代码,但结果相同。
ruby-on-rails - 从 `jquery_ujs` 移动到 `rails-ujs` 后,为什么 jquery 对象没有在测试中初始化?
从 迁移jquery_ujs
到之后rails-ujs
,某些 JS 测试失败并且证明非常难以调试。
问题似乎是 Jquery 对象仅针对序列中的第一个测试进行初始化。在我的开发环境中一切正常。
升级到 Rails 5.1 后一切正常jquery_ujs
。然后我只对application.js
.
这是一个例子。与 select2 字段交互的两个几乎相同的系统测试。
一起运行时,这些测试之一将失败
如果我只专注并运行其中一项或多项测试,它们就会通过。
我考虑过这是否可能是一个 turbolinks 问题(我不认为这是因为测试有时会通过)。尽管如此,我尝试了各种方法来使用 Turbolinks 初始化 Select2,但没有成功。
rails-ujs
测试之间是否存在或jquery_ujs
可能影响 jquery 初始化的根本区别?我是否忽略了一些配置?调试此问题的合乎逻辑的步骤是什么?
ruby-on-rails - Rails.ajax 调用返回 false (rails-ujs)
我正在尝试将 ajax 与rails-ujs一起使用,但我的调用什么也没做。该应用程序使用 rails 5.1 并在 application.js 中有 rails-ujs 要求
当我在浏览器控制台中测试代码时,它返回 false。
下面是代码:
ruby-on-rails - Rails 5.2:Rails UJS、Turbolinks 和 CSP
我们最近将我们的应用程序升级到 Rails 5.2。我们还使用 Turbolinks(连同 Rails 引擎)和 RailsUJS。
在 Rails 5.2 中,我们为 CSP(内容安全策略)提供了新的 DSL。它的配置如下initializers/content_security_policy.rb
:
这工作正常。但是我不能让 Turbolinks 和 RailsUJS 一起工作。
在app/views/layouts/application.html.haml
我们有(简化):
假设我们有一个这样的 ujs 按钮:
还有一个看起来很简单的控制器:
这工作正常,我们在来自 Turbolinks rails 引擎的浏览器中得到了正确的响应:
但是我们得到了错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' https: 'nonce-QAz+FlHz5wo0IwU5sIMZ/w==' 'nonce-IsrK1b0jw1w7cqRhHeZ7ug==' 'nonce-Rpl8hMBgap79cfwdlXXwjA==' ' nonce-1Wq7MbBEYMDCkEWGexwQ9Q==' 'nonce-EUL22iiKHn0hkNuW3fpkbA==' 'nonce-F5Vg50g0JvAvkXHHu+p0qw==' 'nonce-slHxjCy9VVEvvoIcJ870lg==' 'nonce-lboTgbdLG4iCgUozIK4LPQ==' 'nonce-K9yAPOgjZDXRTvnJb3glTA==' 'nonce-ux2kfUZjU/nxJn30LaTFjQ= =' 'nonce-8E8cTAX+jWNpvl5lw0Ydjw==' 'nonce-BvJ4wU3AqjZRWY930+W8kg==' 'nonce-PsS01n7AnjmiThKQJFzUBA==' 'nonce-RCoOSLXbx6Cj8aw+LuBSwA==' 'nonce-o5MfDl/crSPzjSyMzIvXNA==' 'nonce-s8NPaOETMpU2f48LR2SuqQ= =''nonce-Omuo2P68l09PTBFxmk4DkA==''nonce-N3YQfaIuPSrURB8jhVz3Sw==' 'nonce-Ts4Bp4GUqawLcHI1mRLcxw==' 'nonce-fTZ6W2u9eh8K5yCJMPfJGg==' 'nonce-1ST0058rq41fDhw8CforxA==' 'nonce-tA+jUJ1x841ZseUUjvQn9w==' 'nonce-CVjBLiByDSqBNHdG6/izBA==' 'nonce-1z6mH6xtPajsxVmojM8SNA= =' 'nonce-0zlDfL8I0go9aII/DGZUzg==' 'nonce-WOrw4qdxeKfZQ1R7xUfdbQ==' 'nonce-G8kmjJA5E35Asgy6mj80PQ=='"。要么是 'unsafe-inline' 关键字,要么是哈希 ('sha256-9KVlOPCQBe0izU2+kIJoBA6hi7N+a) , 或者需要一个 nonce ('nonce-...') 来启用内联执行。nonce-1z6mH6xtPajsxVmojM8SNA==' 'nonce-0zlDfL8I0go9aII/DGZUzg==' 'nonce-WOrw4qdxeKfZQ1R7xUfdbQ==' 'nonce-G8kmjJA5E35Asgy6mj80PQ=='''unsafe-I6BA96651 关键字,一个 OPCQN+0+KVhi aI2yVDUXS9gYk4PizU=') 或 nonce ('nonce-...') 需要启用内联执行。nonce-1z6mH6xtPajsxVmojM8SNA==' 'nonce-0zlDfL8I0go9aII/DGZUzg==' 'nonce-WOrw4qdxeKfZQ1R7xUfdbQ==' 'nonce-G8kmjJA5E35Asgy6mj80PQ=='''unsafe-I6BA96651 关键字,一个 OPCQN+0+KVhi aI2yVDUXS9gYk4PizU=') 或 nonce ('nonce-...') 需要启用内联执行。
所以这里的第一个问题:这么多随机数是从哪里来的?
另一项调查:在我在 javascript 控制台中调用 Turbolinks.visit 后,csp-nonce
和csrf-token
值正在发生变化。我认为这一定是问题所在。由于 Rails UJS 使用原始值将 nonce 添加到它创建的内联 javascript 标记中。但是在一切都被渲染之后,随机数发生了变化。所以内联标签不再有效。我怎样才能避免这种情况?
-- 注意:我们通过 webpacker 设置 Turbolinks 和 RailsUJS,如下所示:
在此先感谢,
水疗中心
jquery - Rails 5:使用 rails-ujs 和 jquery 处理错误消息
在 Rails 5.1.6 中,我尝试使用 rails-ujs 和 jquery 处理表单的错误消息。
很多.rb
lot_controller.rb
正如预期的那样,当我提交无效表单时,我在浏览器控制台 422 状态和 json 响应中看到:
问题是如何用 rails-ujs 渲染这个 json 响应?
_form.html.erb
创建.js.erb
应用程序.js
出了什么问题?感谢您的任何解释,尤其是解决方案(;
javascript - ActiveAdmin 破坏了 Rails JQuery UJS。不显眼的 JavaScript ajax:success 和 ajax:error 没有触发或被调用
我有以下
和
和
和
我在浏览器控制台中得到了这个
这在我的 Rails 服务器控制台中
那么为什么它不调用 Ajax 回调并在控制台上打印出结果呢?无论成功还是失败,我都希望它能够显示结果。
它直接取自指南: http: //guides.rubyonrails.org/v5.0/working_with_javascript_in_rails.html#form-for
我也试过
我验证了事件正在监听浏览器中的元素
在另一个有效的 Rails 项目中,我有几乎完全一样的东西。我像其他项目一样降级到 Rails 5.0.6,但没有帮助。
导轨 5.0.7,jQuery 3.3.1
我发现这是由 ActiveAdmin 引起的。我已经为它输入了一个错误。当我重命名active_admin.js.coffee
为active_admin.js.coffee.xxx
then 它可以工作,但当然会破坏 ActiveAdmin。我尝试添加//= stub active_admin
到application.js
,但由于某种原因jquery_ujs
无法加载。我查看了该页面的来源/assets/jquery_ujs.self-784...
,尽管//= require jquery_ujs
位于application.js
.
我怎样才能同时拥有 ActiveAdmin 和 UJS?我不需要/admin
页面上的 UJS。