【问题标题】:Sending a DELETE request from Sinatra从 Sinatra 发送 DELETE 请求
【发布时间】:2011-07-07 04:37:56
【问题描述】:

我正在尝试开发一个 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 知识可能仅限于了解他们是如何做到的。

【问题讨论】:

    标签: ruby rest sinatra httprequest http-delete


    【解决方案1】:

    另一种方法是使用Curl:

    curl -X DELETE http://host/user/1
    

    【讨论】:

      【解决方案2】:

      另请参阅Call Sinatra delete route with jQuery,了解如何在前端使用 jQuery 和 JSON,在后端使用 Sinatra。

      【讨论】:

        【解决方案3】:
          %form{:action => "/note/delete/#{@note.id}", :method => "post"}
            %input{:type => 'submit', :name=> "_method", :value => 'delete', :class => 'button'}
        

        你也可以用这样的按钮触发删除路由

        【讨论】:

          【解决方案4】:

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

          use Rack::MethodOverride
          

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

          delete '/user/:id' do |id|
          

          【讨论】:

          • 事实上,如果他使用的是模块化应用程序,我这是必要的。 Sinatra Classy 应用程序默认设置此设置。
          • 对于 Sinatra 模块化样式,您可以将其添加到继承自 Sinatra::Base 的应用程序类中,而不是“使用 Rack::MethodOverride”:“set :method_override, true”
          【解决方案5】:

          我认为这就像 Rails 的方式。您需要定义一个带有 'delete' 值的参数 '_method' 并将其添加到您的表单中。

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

          喜欢:

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

          PUT方法也一样

          【讨论】:

          • 任何关于为什么的参考?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-08
          • 1970-01-01
          • 2015-07-10
          • 1970-01-01
          • 2014-06-16
          • 1970-01-01
          相关资源
          最近更新 更多