如何在Rails 7的UJS响应模板中启用jQuery?
Rails 7 中恢复 js.erb 模板的 jQuery 支持
问题根源是你通过 ES 模块导入的 jQuery 仅存在于模块作用域内,而 data-remote="true" 触发的 js.erb 模板是在全局作用域执行的,所以找不到 $ 变量。按以下步骤修复:
将 jQuery 暴露到全局作用域
修改你的导入代码,把 jQuery 挂载到window对象上:import $ from 'jquery' window.$ = window.jQuery = $; // 新增此行,让全局能访问到 jQuery import Rails from '@rails/ujs'; Rails.start();确认 Importmap 配置(如果使用)
如果你用 Rails 7 默认的 Importmap,确保config/importmap.rb中已经正确 pin 了 jQuery:pin "jquery", to: "https://ga.jspm.io/npm:jquery@3.7.1/dist/jquery.js"处理 Turbo 兼容性(可选)
Rails 7 默认启用 Turbo,如果你仍在使用 UJS,建议在application.html.erb中禁用 Turbo 或者配置两者共存:禁用 Turbo 的话,在<head>里移除 Turbo 的导入,或者给需要用 UJS 的元素加上data-turbo="false"属性。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

