我刚刚切换到使用 Webpacker 的 Rails 6 (6.0.0.rc1) Javascript Assets 和 Rails-UJS 的默认 gem。我想在我的一些模块中使用 Rails UJS,以便从具有以下功能的函数提交表单:
const form = document.querySelector("form")
Rails.fire(form, "submit")
在安装了 Webpacker 的旧 Rails 版本中,
Rails
引用似乎在我的模块中“全局”可用,但现在我在调用 Rails.fire
时得到了这个…ReferenceError: Rails is not defined
如何制作
Rails
来自 @rails/ujs
可用于特定或我的所有模块? 在我的设置下面…
应用程序/javascript/controllers/form_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
// ...
submit() {
const form = this.element
Rails.fire(form, "submit")
}
// ...
}
应用程序/javascript/controllers.js
// Load all the controllers within this directory and all subdirectories.
// Controller files must be named *_controller.js.
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
const context = require.context("controllers", true, /_controller\.js$/)
application.load(definitionsFromContext(context))
应用程序/javascript/packs/application.js
require("@rails/ujs").start()
import "controllers"
谢谢!
最佳答案
在我的app/javascript/packs/application.js
:
import Rails from '@rails/ujs';
Rails.start();
然后在我正在编写的任何模块、 Controller 、组件中:
import Rails from '@rails/ujs';
关于ruby-on-rails - 在 JS 模块中使用 Rails-UJS(带有 webpacker 的 Rails 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56128114/