我想创建一个Rails应用程序,这是否内视图中的一个链接...如何用“DELETE”HTTP动词发送请求?
DELETE /sessions
我该怎么做。
增加了复杂性:
“会话”资源有没有模式,因为它代表了一个用户登录会话。 CREATE
表示用户登录,DESTROY
表示注销。
这就是为什么URI中没有ID参数的原因。
我试图在UI中实现“注销”链接。
我想创建一个Rails应用程序,这是否内视图中的一个链接...如何用“DELETE”HTTP动词发送请求?
DELETE /sessions
我该怎么做。
增加了复杂性:
“会话”资源有没有模式,因为它代表了一个用户登录会话。 CREATE
表示用户登录,DESTROY
表示注销。
这就是为什么URI中没有ID参数的原因。
我试图在UI中实现“注销”链接。
正确,浏览器实际上不支持发送删除请求。许多Web框架的公认规则是将_method参数集设置为'DELETE',并使用POST请求。
下面是Rails的一个例子:
<%= link_to 'log out', session_path, :method => :delete %>
你可能想看看Restful Authentication。
纠正我,如果我错了,但我相信你只能通过浏览器(HTML)发送POST和GET请求。
我不明白Rails,但我经常使用Javascript来建立发送DELETE(和PUT)请求的网页。我只是使用XmlHttpRequest对象来发送请求。
例如,如果你使用jQuery:
有一个链接,看起来像这样:
<a class="delete" href="/path/to/my/resource">delete</a>
,并运行此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
})
})
我多写从内存这个例子,但我很确定它会工作....
Rails的内置链接方法将生成e是这样的:
<a href="/sessions?method=delete" rel="nofollow">Logout</a>
如果你不想使用Rails的内置方法(即,不想rel="nofollow"
,防止搜索引擎爬虫从链接以下),您也可以手动编写的链接,并添加data-method
属性,就像这样:
<a href="/sessions" data-method="delete">Logout</a>
浏览器只能发送GET/POST请求,所以这会向你的Rails服务器发送一个正常的GET请求。 Rails将解释并将其路由为DESTROY/DELETE请求,并调用相应的操作。
正确;不过,您可以使用JavaScript发送带有任意动词的请求。 – 2009-02-07 14:40:42