0

我目前遇到“like.js.erb”文件未运行的问题。可以看到GET请求成功,响应是代码,但是js.erb代码没有运行。我放了一个简单的“console.log(“hello”)”,它也没有运行。任何帮助将不胜感激

/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")
4

2 回答 2

0

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

我的解决方法是更改​​表单声明:

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

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

设置“本地:false”将表单请求设置为“JS”。

于 2021-12-30T14:58:46.063 回答
0

如果其他人在这种情况下苦苦挣扎,从我读到的 js.erb 文件由于安全问题在 Rails 7 中已被贬值。Rails 7 也使用 import_maps 而不是 webpack,所以所有的 javascript 文件都应该从 app/javascript/controllers 运行。我最终只是删除了我的 js.erb 文件并将其内容移动到我的 javascript/控制器中,现在它工作正常。

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

该视频帮助我了解了如何在 Ruby On Rails 7 应用程序中运行 javascript。

于 2021-12-30T20:52:04.707 回答