问题标签 [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.

0 投票
1 回答
43 浏览

rspec - rails_ujs 测试ajax请求完成

有一种非常流行的模式来检查 jquery 的 ajax 请求是否已完成

@rails/ujs 是否有任何等效的此片段,我正在尝试检查它是否有从模式触发的远程表单,它还使用 stimulujs ajax 回调。

0 投票
1 回答
91 浏览

javascript - Rails ujs 和远程表单,如何停止表单提交以编程方式提交表单

我使用 railsform_with作为远程表单。在提交之前,我想显示一个带有动态消息的自定义确认框。在确实确认该框后,我想最终提交表格。我想出了 'ajax:beforeSend' 事件处理程序:

这很好用,但是当我运行Rails.fire(form, 'submit');时,当我最终想提交重新触发的表单时'ajax:beforeSend',我陷入了循环。

使用 form_with 和 rails ujs 实现这种行为的正确方法是什么?

0 投票
1 回答
73 浏览

ruby-on-rails - @rails-ujs 如何拦截 ajax:complete

在使用@rails/ujs(无 jquery)的 Rails 6.1 应用程序中,我试图拦截 ajax 请求何时触发以及何时完成。

我已将以下内容添加到我的application.js

当我解雇他们时,我正确地得到SEND了,但是当他们结束时,我没有得到 (expected) COMPLETE

我在这里错过了什么吗?

0 投票
0 回答
98 浏览

javascript - 通过 rails-ujs 提交远程表单

我正在慢慢对旧版 Rails 应用程序进行现代化改造,并试图换掉jquery-ujs.rails-ujs

我已经rails-ujs通过资产管道安装,并且知道这是按预期工作的:在我的浏览器控制台中,我可以访问该Rails对象。

但是,当我尝试使用该Rails.fire事件提交表单时,我无法获得预期的行为。

在我看来:

在我的刺激控制器中:

如果我删除local: false,则表单会按预期提交,并且页面会重新加载。但是一旦我们添加 AJAX 回来,Rails.fire()就简单地返回false. 我将如何更新它以以编程方式远程提交此表单?

(请注意,我的 Stimulus 控制器是通过 Webpacker 管理的,而 rails-ujs 是通过资产管道安装的。由于我的应用程序中的限制,如果可能的话,我现在想避免rails-ujs通过 Webpacker。

0 投票
2 回答
586 浏览

javascript - Rails UJS 不使用 Rails 7 触发

我将我的 Rails 应用程序升级到 Rails 7。我知道 Turbolinks 和 Rails UJS 实际上被 Rails 7 中 Stimulus 和 Turbo 的 Hotwire 组合所取代,但我想知道我是否仍然可以使用 UJS,如果可以,为什么不能在职的?

我的不起作用的方法如下所示:

console.log 有效。当我点击一个元素时,它曾经用这个代码改变,但现在它不再改变了。Rails.fire当我检查网站时,根本不再触发,并且日志或网络部分没有错误。

我觉得我在这里遗漏了一些重要的东西,但我不知道是什么。

0 投票
1 回答
93 浏览

selenium-webdriver - Rails-ujs 在 Rails 7 的 Capybara 测试中不起作用(使用 Selenium 驱动程序)

我已经连接了@rails/ujs,将其固定并包含在 js 文件中。当我尝试在开发服务器上执行此操作时,我看到该代码按预期工作。但是当我使用 selenium 驱动程序启动我的 capybara 测试时,我在日志中看到该表单(具有remote: true标志)作为 HTML 提交。

这是我的代码:

意见/文章/index.html.slim

应用程序/javascript/controllers/forms_controller.js

文章控制器.rb

文章/index.js.erb

规范/接受/index_page_spec.rb

当我在页面上启动一些 js 文件(例如,发送 AJAX 请求)时,我会在测试日志中看到它们,因此我看到了 selenium 驱动程序工作。我想,我没有正确连接 rails-ujs,但不确定我到底错过了什么。有人可以帮忙吗?非常感谢您!