【发布时间】:2014-10-12 06:58:09
【问题描述】:
我在使用 Rails 4 中的 delete 方法进行远程链接时遇到问题
每当我有这样的链接时
<%= link_to "delete this", delete_path, remote: true, method: :delete %>
当我点击它时,它会触发正确的destroy.js.erb 响应,但之后任何远程链接都没有任何反应。在服务器上确实发生了事情,因为我看到这些东西被渲染了,但在浏览器上什么都没有发生。这让我需要刷新页面才能让其他 UJS 请求正常工作。
这是 ujs 和删除的已知问题吗?
有没有办法强制所有destroy 操作在post 而不是delete 上?
更新:
根据我的测试,这仅在 chrome 中发生(也隐身),在 safari 中正常工作
用于删除的服务器日志
Started DELETE "/disc/12" for 127.0.0.1 at 2014-08-19 11:47:59 +0300
Processing by DiscController#destroy as JS
Parameters: {PARAMS}
// REVELVANT SQL WORKING
(3.3ms) COMMIT
Rendered discs/destroy.js.erb (3.3ms)
User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = 6 ORDER BY "users"."id" ASC LIMIT 1
Completed 200 OK in 96ms (Views: 18.7ms | ActiveRecord: 18.1ms)
destroy.js.erb
$("#disc-<%= @disc.id %>").hide('slow');
销毁操作
def destroy
@disc = Disc.find params[:id]
@disc.destroy
end
【问题讨论】:
-
由于一切似乎都在根据您的服务器日志进行渲染和工作,所以我认为您在 destroy.js.erb 中的 js 代码有问题。你能发布你的服务器日志和js代码吗
-
相关的 html 是否隐藏?
-
您在浏览器控制台中看到任何错误吗?您确定存在 js.erb 模板中使用的 id 元素吗?
-
没有错误,问题是下一个 UJS 请求(如通过帖子创建)在服务器上触发,js 响应没有被渲染。如果我之前不发送删除请求,它可以正常工作
-
显示
delete操作。
标签: ruby-on-rails ujs http-delete