gpt4 book ai didi

javascript - Ajax js 和 rails 代码未同步 destroy.js.erb

转载 作者:行者123 更新时间:2023-11-30 17:20:21 25 4
gpt4 key购买 nike

我的 destroy.js.erb 中有这段代码,用于执行 ajax 请求以删除某些对象...

<% @client.destroy %> 无论如何都会运行,并且无论单击什么都会删除客户端。

    callback: function(e) {
if (e === true) {
return $('#edit_client_<%= @client.id %>').parent().remove();
<% @client.destroy %>
console.log(e);
}else if (e === false){
console.log(e);
}
}

如何优雅地解决这个问题?

最佳答案

问题是您的文件以 js.erb 结尾。这是 asset pipeline 的一部分,这意味着 ERB (Rails) 位在任何 JS 之前运行(事实上,JS 甚至不在服务器,因此您不能真正颠倒命名顺序以使其在服务器上运行)。

最简单的解决方案是添加一个数据属性,其中包含客户端 ID 或与单击的按钮类似的内容,并使用该 ID 而不是 Ruby 来生成 ID。

回复:第一条评论
同样适用。不管 Javascript if 是什么,ERB 代码都会运行,因为 ERB 处理器不理解/关心你的 JS if。最好的解决方案是向您的服务器发送 AJAX 请求,您在 Controller 中执行 destroy 。这也有利于干净地分离前端和后端。

关于javascript - Ajax js 和 rails 代码未同步 destroy.js.erb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com