我正在尝试开发RESTful Sinatra应用程序。现在,我知道如何用类似
的方式回复删除请求delete '/user/:id' do |id|
#do something in the model
end
我感兴趣的是如何执行该方法。我不能拥有DELETE而不是GET的链接,可以吗?
到目前为止,我找到的唯一解决方案是通过jQuery发送DELETE请求:How to send a PUT/DELETE request in jQuery?
我尝试在github上查看不同的RESTful Sinatra项目,但我的Ruby知识可能仅限于了解他们是如何做的。
答案 0 :(得分:27)
在代码中添加以下行。
use Rack::MethodOverride
它可以帮助您解释带有参数“_method
”的帖子方法,其值为“delete
”。
然后你可以写
delete '/user/:id' do |id|
答案 1 :(得分:15)
我认为这就像Rails的方式。您需要使用'delete'值定义params'_method'并将其添加到表单上。
当您使用此特定参数发布表单时,您将在sinatra中执行DELETE请求。
喜欢:
<form action="/search" method="post">
<div style="margin:0;padding:0">
<input name="_method" type="hidden" value="delete" />
</div>
</form>
与PUT方法相同
答案 2 :(得分:5)
另一种方法是使用Curl:
curl -X DELETE http://host/user/1
答案 3 :(得分:0)
%form{:action => "/note/delete/#{@note.id}", :method => "post"}
%input{:type => 'submit', :name=> "_method", :value => 'delete', :class => 'button'}
您也可以使用类似按钮
触发删除路线答案 4 :(得分:0)
另见Call Sinatra delete route with jQuery有关如何使用前端的jQuery和JSON以及后端的Sinatra执行此操作。