Rails ajax响应和DELETE方法

时间:2014-08-19 08:35:19

标签: ruby-on-rails ujs http-delete

我在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

2 个答案:

答案 0 :(得分:0)

在销毁之后,您将无法在视图中找到@disc.id,即。 destroy.js.erb。这就是为什么你不会在视角方面看到任何反思。将已删除的元素id保存在控制器中的任何实例变量中,然后尝试使用该变量值而不是已删除的对象ID添加隐藏内容。

答案 1 :(得分:0)

尝试在rails 4中禁用turbolinks

如果我们创建一个新的Rails 4应用程序并决定不使用Turbolinks,我们可以通过在gemfile中注释gem和应用程序的JavaScript清单文件中的require语句来轻松删除它。 < / p>