如何使用“DELETE”HTTP动词发送请求?

我想在Rails应用程序中的视图中创建一个链接来执行此操作…

DELETE /sessions 

我该怎么做

添加了复杂function:

“会话”资源没有模型,因为它代表用户登录会话。 CREATE表示用户登录, DESTROY表示注销。

这就是为什么URI中没有ID参数。

我正在尝试在UI中实现“注销”链接。

正确的是,浏览器实际上并不支持发送删除请求。 许多Web框架的公认惯例是将_method参数设置为’DELETE’,并使用POST请求。

这是Rails中的一个例子:

 <%= link_to 'log out', session_path, :method => :delete %> 

您可能想要查看Restful Authentication 。

我不是特别了解Rails,但我经常构建使用Javascript发送DELETE(和PUT)请求的网页。 我只是使用XmlHttpRequest对象来发送请求。

例如,如果您使用jQuery:

有一个看起来像这样的链接:

 delete 

并运行此Javascript:

 $(function(){ $('a.delete').click(function(){ $.ajax( { url: this.getAttribute('href'), type: 'DELETE', async: false, complete: function(response, status) { if (status == 'success') alert('success!') else alert('Error: the service responded with: ' + response.status + '\n' + response.responseText) } } ) return false }) }) 

我主要是从内存中写这个例子,但我很确定它会起作用….

如果我错了,请纠正我,但我相信你只能用浏览器发送POST和GET请求(用HTML格式)。

Rails内置的链接方法将生成如下内容:

 Logout 

如果您不想使用Rails的内置方法(即不希望rel="nofollow" ,这会阻止搜索引擎抓取工具跟踪链接), 您也可以手动编写链接并添加data-method属性,如下所示:

 Logout 

浏览器只能发送GET / POST请求,因此这会向您的Rails服务器发送正常的GET请求。 Rails将解释并将其作为DESTROY / DELETE请求进行路由,并调用相应的操作。