问题标签 [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 - 在 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 提出了一个带有解决方案的拉取请求,但一年多后仍未被接受
日志文件可能如下所示:
点击复选框:
单击复选框关闭:
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 而不是解释的。
这是链接的代码。
从我的 index.js.haml 文件
我对阻止的回应。rooms_controller.rb
如何获得响应以在浏览器中呈现而不是显示原始 html?
我一直眯着眼睛看着这个,我知道怎么做。关于我所缺少的任何想法?
谢谢!
戴夫
ruby-on-rails - Rails 6:使用 GET 而不是 DELETE 链接到 destroy_user_session_path
我刚刚开始了一个简单的 Rails 6.0.3.1 项目。
我正在设置设计操作,但注销链接似乎不起作用。尽管我指定了方法,但它正在执行GET
请求而不是:DELETE
点击链接产生:
控制台中没有错误:
我的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
) 包括以下行:
我创建了一个简单的虚拟应用程序来重现该问题。
关于我在这里可能做错了什么有什么建议吗?
提前致谢!
javascript - Rails 远程表单以 HTML 格式提交
我的应用程序必须使用 Bootstrap 4.1 加载模式,其中包含在加载模式时动态生成的表单。
表单应该使用 AJAX 提交,但是即使设置了 remote: true 标志,它也会作为 HTML 提交。
我知道因为表单在页面加载时不存在,所以 Javascript 事件没有绑定到它。
表单是通过 AJAX 添加到页面的,所以当所有偶数绑定发生时它不存在。流程是:
- 用户点击“添加新的从属关系”并打开模态;
- 用户选择隶属类型;
- 根据选择的附属类型,通过 AJAX 生成一个表单并将其插入到已经打开的模式中。
- 当用户点击“保存”时,预计表单应该通过 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)
表单标签
控制器中的创建动作
呈现的形式
ruby-on-rails - Rails UJS 验证后重新启用提交按钮
Rails 在提交表单时会自动禁用提交按钮。当您需要在执行验证后重新启用它时,就会出现问题。
ruby-on-rails - 这是做什么的:`const { $ } = require("@rails/ujs");` 在我的 Rails 应用程序中?它似乎导致错误
在app/javascript/packs/application.js
我看到:const { $ } = require("@rails/ujs");
由于某些未知原因,我收到此错误:
当我注释掉这一行时:const { $ } = require("@rails/ujs");
- 然后错误消失了,但我不知道我是否需要这一行?
这个错误以前没有发生过……希望我有更多的细节,但我没有。
javascript - 替换 DOM 元素上的 Rails Ajax 事件
我有一个简单的 Rails ujs 应用程序,页面上有一些远程链接。
在我的 js 模板中,我将此链接替换为新链接。
同时我需要监听 ajax:success 事件:
但问题是这个事件永远不会触发。因为它的目标元素被替换了。
即使从 dom 中删除了目标元素,我如何才能收听 ajax:success?
我的代码没有实际意义,但它的目的是以简单的方式演示现实世界的问题。
javascript - Rails 6:SimpleFrom Remote:通过 javascript/Jquery 真正提交
我已阅读此使用 javascript 提交 Rails 远程表单
并且所有解决方案似乎都不起作用。我只需要在提交被调用之前运行一个回调。
看法
JS
我的表单似乎没有使用 remote: true 提交,所以没有 ajax,我得到的是 html 响应而不是 js 响应。
ruby-on-rails - 在rails应用程序中加载javascript的位置
我的应用程序有两部分似乎需要我在不同的点加载我的 javascript。
- 当我放置
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
在<head></head>
. - Shubox(用于上传照片的 js 库)在我
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
之前放置时工作</body>
。
当 javascript 在另一个需要的地方加载时,两者都不起作用。因此,如果我将 javascript 行放在正文的末尾,omniauth 不起作用。
如果需要,我可以提供更多信息。先感谢您。
应用程序.js
应用程序.html.erb
ruby-on-rails - 在刺激控制器内提交表单的 Rails-ujs 上的奇怪 Turbolinks 响应
我是一名 Rails 初级开发人员,最近我尝试使用 Stimulus 和 rails-ujs 从这两篇文章中重现动态搜索表单:here和here。
基本上,它是关于通过在激励控制器中提交表单查询Rails.fire
,将其发送到专用的 Rails 控制器,从数据库中获取数据,然后将其发送回拦截 AJAX 响应的激励控制器。一切正常,直到显示我的部分。当我的函数接收到控制台中的数据时,我检查了控制台中的数据,我得到了一个奇怪的 Turbolinks 函数,而不是我期望的内容。我正在使用 Rails 6.1 和引导程序 5。
知道我的问题来自哪里吗?
我的控制器
我的表格
我的观点
我的刺激控制器:
以及我在 handleResults() 中得到的数据