RubyonRails 7-js.erb文件未运行



我的"比如.js.erb";文件未运行。我可以看到GET请求是成功的,响应是代码,但js.erb代码没有运行。我放了一个简单的";console.log("你好"(;它也没有运行。如有任何帮助,将不胜感激

/controllers/likes_controller.rb

class LikesController < ApplicationController
before_action :authenticate_account!
protect_from_forgery except: :save_like

def save_like
@like = Like.new(post_id: params[:post_id], account_id: current_account.id)
@post_id = params[:post_id]
respond_to do |format|
format.js{
if @like.save
@success = true
else
@success = false
end
render "posts/like"
}
end
end
end

likes_controller.js

import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
this.element.addEventListener("click", function(e){
var post_id = e.target.getAttribute("data-id")
console.log(post_id)

var oReq = new XMLHttpRequest();
oReq.open("GET", "/post/like/" + post_id)
oReq.send()
})
}
}

/views/posts/like.js.erb

console.log("hello")

如果其他人正在与这种情况作斗争,从我所读到的内容来看,由于安全问题,js.erb文件在Rails7中已被弃用。Rails7还使用import_maps而不是webpack,因此所有javascript文件都应该从app/javascript/controllers运行。我最终只是删除了我的js.erb文件,并将其内容移动到我的javascript/控制器中,现在它运行得很好。

https://www.youtube.com/watch?v=PtxZvFnL2i0&ab_channel=DavidHeinemeierHansson

这个视频帮助我了解了如何在RubyonRails7应用程序中运行javascript。

我在升级时也遇到了这个问题。

我的解决方案是将表单声明从更改为

<%= form_with url: sign_in_path do |f| %>

<%= form_with url: sign_in_path, local: false do |f| %>

设置"local:false"将中的表单请求设置为"JS"。

最新更新