问题标签 [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 回答
464 浏览

ruby-on-rails - 在 Rails-UJS 中获取 AJAX 复选框值

当我尝试提交 AJAX 复选框时,如果未选中复选框,我不会将值作为参数传递。我知道在普通表单中 Rails 为复选框添加了一个具有相同名称和值为 0 的隐藏字段,但这在这里不起作用,因为只有一个输入被序列化,而不是整个表单。

我正在使用 Rails-UJS,如下所述: https ://guides.rubyonrails.org/v5.2/working_with_javascript_in_rails.html#data-url-and-data-params

我还在 JQuery-UJS 中找到了这个: https ://github.com/rails/jquery-ujs/wiki/Unobtrusive-scripting-support-for-jQuery-%28list-of-data-attributes%29#data-url

这个问题讨论了它,@yourivdlans 提出了一个带有解决方案的拉取请求,但一年多后仍未被接受

日志文件可能如下所示:

点击复选框:

单击复选框关闭:

0 投票
1 回答
285 浏览

ruby-on-rails - Rails-UJS 响应呈现原始 html 而不是解释的haml

  • Rails 6.0.1.2 使用 Webpacker
  • 雷宝石
  • 哈姆
  • Rails-ujs

我正在使用 kaminari gem 进行分页和 rails-ujs 实现无限滚动功能。

部分加载在初始页面视图上很好。它显示结果(每个结果都是从名为“rooms_card.html.haml”的部分呈现的卡片</p>

将 index.html.haml 页面上的 rooms_card 部分呈现为集合。

初始页面渲染

但是,当我单击“查看更多”链接时,会发出请求并附加结果,但它是显示的原始 html 而不是解释的。

原始 html 附加而不是渲染

这是链接的代码。

从我的 index.js.haml 文件

我对阻止的回应。rooms_controller.rb

如何获得响应以在浏览器中呈现而不是显示原始 html?

我一直眯着眼睛看着这个,我知道怎么做。关于我所缺少的任何想法?

谢谢!

戴夫

0 投票
2 回答
623 浏览

ruby-on-rails - Rails 6:使用 GET 而不是 DELETE 链接到 destroy_user_session_path

我刚刚开始了一个简单的 Rails 6.0.3.1 项目。

我正在设置设计操作,但注销链接似乎不起作用。尽管我指定了方法,但它正在执行GET请求而不是:DELETE

点击链接产生:

显示 GET 请求的 Rails 错误消息

控制台中没有错误:

单击时没有控制台错误

我的app/javascript/packs/application.js样子是这样的:

所以 Rails ujs 应该拦截链接点击并执行 a DELETE,但事实并非如此。

我的config/webpack/environment.js样子是这样的:

我尝试在其他 SO 线程上搜索解决方案,但没有找到可行的方法。有些人建议使用按钮而不是链接,但我想要的是链接而不是按钮。

我通过 yarn 安装了 Bulma CSS 框架后出现了这个问题:

然后我将其导入到我的项目中app/javascript/packs/application.scss

我的布局文件 ( application.html.erb) 包括以下行:

我创建了一个简单的虚拟应用程序来重现该问题。

关于我在这里可能做错了什么有什么建议吗?

提前致谢!

0 投票
0 回答
178 浏览

javascript - Rails 远程表单以 HTML 格式提交

我的应用程序必须使用 Bootstrap 4.1 加载模式,其中包含在加载模式时动态生成的表单。

表单应该使用 AJAX 提交,但是即使设置了 remote: true 标志,它也会作为 HTML 提交。

我知道因为表单在页面加载时不存在,所以 Javascript 事件没有绑定到它。

表单是通过 AJAX 添加到页面的,所以当所有偶数绑定发生时它不存在。流程是:

  1. 用户点击“添加新的从属关系”并打开模态;
  2. 用户选择隶属类型;
  3. 根据选择的附属类型,通过 AJAX 生成一个表单并将其插入到已经打开的模式中。
  4. 当用户点击“保存”时,预计表单应该通过 AJAX 提交,模态消失并且新的隶属关系被添加到列表中

在这种情况下,如何在加载表单后将表单绑定到 JS 事件?或者远程提交的最佳方式是什么?

编辑

到目前为止,我发现,如果页面直接在主体中加载而不是使用 AJAX,它的工作原理和外观与在模式中时完全相同。

在模态中,我尝试使用以下几种方式从控制台运行提交:

$("#new_affiliation").trigger('submit'); 使用 HTTP 提交表单

nativeFormEl = $("#new_affiliation")[0]; Rails.fire(nativeFormEl, '提交'); 返回真,但什么也不做

nativeFormEl = $("#new_affiliation")[0]; Rails.handleRemote.call(nativeFormEl); 使用 AJAX 提交表单,但抛出异常:

TypeError: Cannot read property 'target' of undefined at Rails.stopEverything (application-785dee507ca17b63962581aa57866b38a001fd1a70d0bec06d994151a9cfc39a.js:160) at HTMLFormElement.Rails.handleRemote (application-785dee507ca17b63962581aa57866b38a001fd1a70d0bec06d994151a9cfc39a.js:629) at :1:20

在这一点上,我想知道,为什么 Rail.fire 返回 true,但什么也没做?

在主页上

加载模态:

在控制器的操作成功时加载表单 (new.js.erb)

表单标签

控制器中的创建动作

呈现的形式

0 投票
1 回答
77 浏览

ruby-on-rails - Rails UJS 验证后重新启用提交按钮

Rails 在提交表单时会自动禁用提交按钮。当您需要在执行验证后重新启用它时,就会出现问题。

0 投票
0 回答
52 浏览

ruby-on-rails - 这是做什么的:`const { $ } = require("@rails/ujs");` 在我的 Rails 应用程序中?它似乎导致错误

app/javascript/packs/application.js我看到:const { $ } = require("@rails/ujs");

由于某些未知原因,我收到此错误:

当我注释掉这一行时:const { $ } = require("@rails/ujs");- 然后错误消失了,但我不知道我是否需要这一行?

这个错误以前没有发生过……希望我有更多的细节,但我没有。

0 投票
1 回答
175 浏览

javascript - 替换 DOM 元素上的 Rails Ajax 事件

我有一个简单的 Rails ujs 应用程序,页面上有一些远程链接。

在我的 js 模板中,我将此链接替换为新链接。

同时我需要监听 ajax:success 事件:

但问题是这个事件永远不会触发。因为它的目标元素被替换了。

即使从 dom 中删除了目标元素,我如何才能收听 ajax:success?

我的代码没有实际意义,但它的目的是以简单的方式演示现实世界的问题。

0 投票
0 回答
255 浏览

javascript - Rails 6:SimpleFrom Remote:通过 javascript/Jquery 真正提交

我已阅读此使用 javascript 提交 Rails 远程表单

并且所有解决方案似乎都不起作用。我只需要在提交被调用之前运行一个回调。

看法

JS

我的表单似乎没有使用 remote: true 提交,所以没有 ajax,我得到的是 html 响应而不是 js 响应。

0 投票
2 回答
279 浏览

ruby-on-rails - 在rails应用程序中加载javascript的位置

我的应用程序有两部分似乎需要我在不同的点加载我的 javascript。

  1. 当我放置<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' <head></head>.
  2. Shubox(用于上传照片的 js 库)在我<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' 之前放置时工作</body>

当 javascript 在另一个需要的地方加载时,两者都不起作用。因此,如果我将 javascript 行放在正文的末尾,omniauth 不起作用。

如果需要,我可以提供更多信息。先感谢您。

应用程序.js

应用程序.html.erb

0 投票
0 回答
155 浏览

ruby-on-rails - 在刺激控制器内提交表单的 Rails-ujs 上的奇怪 Turbolinks 响应

我是一名 Rails 初级开发人员,最近我尝试使用 Stimulus 和 rails-ujs 从这两篇文章中重现动态搜索表单:herehere

基本上,它是关于通过在激励控制器中提交表单查询Rails.fire,将其发送到专用的 Rails 控制器,从数据库中获取数据,然后将其发送回拦截 AJAX 响应的激励控制器。一切正常,直到显示我的部分。当我的函数接收到控制台中的数据时,我检查了控制台中的数据,我得到了一个奇怪的 Turbolinks 函数,而不是我期望的内容。我正在使用 Rails 6.1 和引导程序 5。

知道我的问题来自哪里吗?

我的控制器

我的表格

我的观点

我的刺激控制器

以及我在 handleResults() 中得到的数据

最后,我的部分被渲染的结果