4

如果我想在 rails 中创建一个 DELETE 链接,我编写以下代码(在本例中删除 Devise 中的用户会话):

<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>

这将变成以下 HTML:

<a rel="nofollow" data-method="delete" href="/users/sign_out">Logout</a>

效果很好,只是我不能简单地将 HTML 放入静态 HTML 页面。它只会做一个 GET 请求。我假设 Rails 包含一些标准 Javascript 以将上述链接转换为实际执行 DELETE 请求的链接。那么,在静态 HTML 页面上链接到执行 DELETE 操作的 Rails 资源的正确方法是什么?我是否应该在所有执行此操作的网页中找到并获取 Javascript Rails 包含的内容?有没有更好的办法?

4

3 回答 3

6

不幸的是,您不能DELETE使用锚链接发送请求 - 传统的锚链接只会发送GET请求。实际上,您根本无法真正发送真正的DELETE请求。如果你想创建一个删除链接,没有 javascript,解决方案相当简单。查看2.4 带有 PUT 或 DELETE 方法的表单如何工作?官方文档中。基本上,您可以简单地使用delete. 这很简单,您不需要依赖 javascript 来完成工作。希望这有帮助,祝你好运。

于 2012-11-03T04:37:21.477 回答
3

Rails 使用 JavaScript 来处理delete链接。

它创建一个不可见的表单,并在您单击具有data-method属性的链接时提交它"delete"

看看https://github.com/rails/jquery-ujs/blob/master/src/rails.jshandleMethod _

也许您在静态页面中的删除链接只会在您包含时起作用rails.js(如果您使用的是 jQuery)。如果没有,您可以构建一个表单,因为它是handleMethod您自己完成的。

于 2012-11-03T04:22:46.320 回答
3

由于我的一些同事正在开发一个本地应用程序,用户可能没有在他们的浏览器上启用 JavaScript,在这种情况下删除链接将不起作用,我们将获得显示页面而不是删除....所以如果您不确定用户是否可能在其浏览器上启用了 JS,您始终可以使用 GET 或 POST 方法生成路由来删除控制器的操作...这种方法也适用于静态 HTML 页面..

于 2012-11-03T05:08:01.060 回答