我目前遇到“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")
uj5u.com熱心網友回復:
我在升級時也遇到了這個問題。
我的解決方法是將表單宣告更改為:
<%= form_with url: sign_in_path do |f| %>
到
<%= form_with url: sign_in_path, local: false do |f| %>
設定 'local: false' 將表單請求設定為 'JS'。
uj5u.com熱心網友回復:
如果其他人在這種情況下苦苦掙扎,從我讀到的 js.erb 檔案中,出于安全考慮,Rails 7 中的檔案已經折舊了。Rails 7 還使用 import_maps 而不是 webpack,所以所有的 javascript 檔案都應該從 app/javascript/controllers 運行。我最終只是洗掉了我的 js.erb 檔案并將其內容移動到我的 javascript/controllers 并且它現在作業正常。
https://www.youtube.com/watch?v=PtxZvFnL2i0&ab_channel=DavidHeinemeierHansson
該視頻幫助我了解了如何在 Ruby On Rails 7 應用程式中運行 javascript。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398336.html
上一篇:如何在Rails中隱藏子目錄
