我把我的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
只是不再触发了,当我检查网站时,日志或网络部分没有错误。
我觉得我错过了一些重要的东西,但我不知道是什么。
2条答案
按热度按时间wkyowqbh1#
要将rails-ujs添加到Rails 7,您应该执行以下步骤:
1.固定它,让应用程序知道要使用哪个包。在bash中输入:
现在你的config/importmap.rb文件中有如下内容:
1.现在将@rails/ujs添加到您的javascript中,在文件javascript/controllers/application.js中添加:
1.重新启动应用程序服务器
jhdbpxl92#
问题是在Rails6.x中,表单是使用属性
data-remote="true"
自动生成的,而在升级到Rails7.x之后,这种情况就不会再发生了。要恢复原来的行为并使
Rails.fire
调用再次工作,需要显式地将data-remote="true"
添加到表单中。