【问题标题】:Ruby on Rails 7 - js.erb file not runningRuby on Rails 7 - js.erb 文件未运行
【发布时间】:2021-12-30 09:34:39
【问题描述】:

我目前遇到的问题是我的“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")

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-7


    【解决方案1】:

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

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

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

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

    设置 'local: false' 将表单请求设置为 'JS'。

    【讨论】:

    • 如何在非表单元素中实现这一点?我试图运行的 javascript 是由 HTML 元素触发的
    【解决方案2】:

    如果其他人在这种情况下苦苦挣扎,从我读到的 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2012-07-19
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多