我在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
答案 0 :(得分:0)
在销毁之后,您将无法在视图中找到@disc.id
,即。 destroy.js.erb
。这就是为什么你不会在视角方面看到任何反思。将已删除的元素id保存在控制器中的任何实例变量中,然后尝试使用该变量值而不是已删除的对象ID添加隐藏内容。
答案 1 :(得分:0)
尝试在rails 4中禁用turbolinks
。
如果我们创建一个新的Rails 4应用程序并决定不使用Turbolinks,我们可以通过在gemfile中注释gem和应用程序的JavaScript清单文件中的require语句来轻松删除它。 < / p>