我对运行旧的 jQuery 代码片段和 Rails UJS 以及 Turbo 到底需要做什么感到困惑。
DHH 在 6 月份添加了这个 PR,它本应提高兼容性,但它缺乏有关设置应如何工作的详细信息。
我的应用程序中仍然有一堆旧的 jQuery 和 UJS 片段,但我也在尝试迁移到 Turbo。我最初试图完全放弃 UJS,但一次太多了。此时,我正在使用 Webpacker 运行 Rails 6.1.4.1,并且我的 Gemfile 中没有任何 UJS gem。
升级页面说:
“Rails UJS 可以直接从 Rails 框架提供,也可以通过经典的 jquery-ujs 插件提供。”
这是否意味着 UJS 现在已内置到 Rails 中,而不是单独的 gem?或者我应该添加gem 'jquery-rails'
到我的 Gemfile 中吗?
我的 package.json 呢?我现在需要回去,yarn add jquery-ujs
如这里所示?
application.js 呢?我之前在这里导入了@rails/ujs,比如:
import Rails from "@rails/ujs"
Rails.start()
当我添加 Turbo 时,我注释掉了这些行。它们是必要的还是没有的?
关于 jQuery,我拼凑在一起(从其他网站粘贴)一种使用$
全局的方法:
var jQuery = require('jquery')
global.$ = global.jQuery = jQuery;
window.$ = window.jQuery = jQuery;
这不再需要了吗?
编辑以包含 package.json 和 application.js 的依赖项部分...
package.json
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.2",
"@hotwired/turbo-rails": "^7.0.0-rc.5",
"@rails/request.js": "^0.0.5",
"@rails/webpacker": "5.4.2",
"chart.js": "^3.0.2",
"chartkick": "^4.0.2",
"cssnext": "^1.8.4",
"expose-loader": "^2.0.0",
"flatpickr": "4.6.6",
"jquery": "^3.6.0",
"lodash": "^4.17.21",
"select2": "4.0.13",
"signature_pad": "^3.0.0-beta.4",
"slim-select": "1.26.1",
"stimulus": "^2.0.0",
"stimulus-flatpickr": "^1.4.0",
"tippy.js": "^6.3.1",
"trim-canvas": "^0.1.2"
}
application.js
// Allow global access to jQuery and $
var jQuery = require('jquery')
global.$ = global.jQuery = jQuery;
window.$ = window.jQuery = jQuery;
// This was uncommented when I used rails/ujs
// import Rails from "@rails/ujs"
import "@hotwired/turbo-rails"
// This was uncommented when I used rails/ujs
// Rails.start()
// select2 menus
require("select2")
// tooltips
import tippy from 'tippy.js'
import 'tippy.js/dist/tippy.css';
// stimulus js
import { Application } from "stimulus"
// Flatpickr date picker
import Flatpickr from "stimulus-flatpickr"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
application.register("flatpickr", Flatpickr)
const context = require.context("./controllers", true, /\.js$/)
application.load(definitionsFromContext(context))