Rails UJS 无法与 Rails 7 一起启动

sam*_*sam 15 javascript ruby-on-rails rails-ujs ruby-on-rails-7

我将Rails应用程序升级到Rails 7。我知道Turbolinks和Rails UJS实际上被Rails 7中的Stimulus和Turbo的Hotwire组合所取代,但我想知道我是否仍然可以使用UJS,如果可以,为什么不可以在职的?

我的方法不起作用,如下所示:

  submit(event) {
    this.errorTarget.classList.add("hidden")
    Rails.fire(this.formTarget, "submit")
    console.log('hi')
  }

Run Code Online (Sandbox Code Playgroud)

console.log 有效。当我单击某个元素时,它过去会随此代码而更改,但现在它不再更改。Rails.fire当我检查网站时,根本不再触发,并且日志或网络部分没有错误。

我觉得我在这里错过了一些重要的东西,但我不知道是什么。

Rus*_*eev 33

要将 Rails-ujs 添加到 Rails 7,您应该执行以下步骤:

  1. 固定它,让应用程序知道要使用哪个包。在bash中输入:
./bin/importmap pin @rails/ujs
Run Code Online (Sandbox Code Playgroud)

现在你的config/importmap.rb文件中有这样的内容:

pin "@rails/ujs", to: "https://ga.jspm.io/npm:@rails/ujs@7.0.1/lib/assets/compiled/rails-ujs.js"
Run Code Online (Sandbox Code Playgroud)
  1. 现在将 @rails/ujs 添加到您的 javascript 中。在文件javascript/controllers/application.js中添加:
import Rails from '@rails/ujs';

Rails.start();
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动您的应用程序服务器

  • 您可能想要使用 `./bin/importmap pin @rails/ujs@7` 将其固定到版本 7。否则您可能最终会加载 @rails/ujs@6 。 (3认同)