javascript Rails UJS未使用Rails 7激发

r8xiu3jd  于 2023-02-11  发布在  Java
关注(0)|答案(2)|浏览(162)

我把我的Rails应用程序升级到了Rails7。我知道Turbolink和RailsUJS实际上被Rails7中的刺激和Turbo的Hotwire组合所取代,但是我想知道我是否仍然可以使用UJS,如果可以,为什么它不工作?
我的方法是不工作看起来像这样:

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

当我点击一个元素时,它会随着这个代码而改变,但是现在它不再改变了。Rails.fire只是不再触发了,当我检查网站时,日志或网络部分没有错误。
我觉得我错过了一些重要的东西,但我不知道是什么。

wkyowqbh

wkyowqbh1#

要将rails-ujs添加到Rails 7,您应该执行以下步骤:
1.固定它,让应用程序知道要使用哪个包。在bash中输入:

./bin/importmap pin @rails/ujs

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

pin "@rails/ujs", to: "https://ga.jspm.io/npm:@rails/ujs@7.0.1/lib/assets/compiled/rails-ujs.js"

1.现在将@rails/ujs添加到您的javascript中,在文件javascript/controllers/application.js中添加:

import Rails from '@rails/ujs';

Rails.start();

1.重新启动应用程序服务器

jhdbpxl9

jhdbpxl92#

问题是在Rails6.x中,表单是使用属性data-remote="true"自动生成的,而在升级到Rails7.x之后,这种情况就不会再发生了。
要恢复原来的行为并使Rails.fire调用再次工作,需要显式地将data-remote="true"添加到表单中。

相关问题