20

我正在尝试开发一个 RESTful Sinatra 应用程序。现在,我知道如何响应删除请求,例如

delete '/user/:id' do |id|
   #do something in the model
end

我感兴趣的是如何执行该方法。我不能拥有执行 DELETE 而不是 GET 的链接,可以吗?

到目前为止,我发现的唯一解决方案是通过 jQuery 发送 DELETE 请求:如何在 jQuery 中发送 PUT/DELETE 请求?

我尝试在 github 上查看不同的 RESTful Sinatra 项目,但我的 Ruby 知识可能仅限于了解他们是如何做到的。

4

5 回答 5

28

在您的代码中添加以下行。

use Rack::MethodOverride

它将帮助您将带有参数“ _method”和值“ delete”的 post 方法解释为 put。然后你可以写

delete '/user/:id' do |id|
于 2011-03-02T15:48:21.160 回答
16

我认为这就像 Rails 方式。您需要使用“删除”值定义参数“_method”并将其添加到您的表单中。

当您使用此特定参数发布表单时,您会在 sinatra 中执行 DELETE 请求。

像 :

<form action="/search" method="post">
  <div style="margin:0;padding:0">
    <input name="_method" type="hidden" value="delete" />
  </div>
</form>

与 PUT 方法相同

于 2011-03-02T11:10:48.600 回答
4

另一种方法是使用 Curl:

curl -X DELETE http://host/user/1
于 2011-09-07T07:07:24.153 回答
0
  %form{:action => "/note/delete/#{@note.id}", :method => "post"}
    %input{:type => 'submit', :name=> "_method", :value => 'delete', :class => 'button'}

您也可以使用这样的按钮触发删除路线

于 2012-05-28T17:26:36.667 回答
0

另请参阅使用 jQuery 调用 Sinatra 删除路由,了解如何在前端使用 jQuery 和 JSON 以及在后端使用 Sinatra。

于 2012-11-28T03:45:13.397 回答