3

如果我这样做:

curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'

我得到“只允许获取、放置和删除请求”。为什么?导轨 2.3.2

4

3 回答 3

4

luca 是正确的,您需要在请求中发送 X-Http-Method-Override 标头。将 _method=put 放在 JSON 正文中对我不起作用。您的 curl 命令行将如下所示:

 curl
  -H "X-Http-Method-Override: put"
  -H "Content-Type: application/json"
  -d "{\"user\":{\"email\":\"blah@example.com\"}}"
  www.site.com/users/username.json
于 2009-12-20T08:25:29.203 回答
3

这实际上是 Rails 最新版本中的故障。解决方案是使用 put 传递 HTTP 方法覆盖标头。重要提示:标头的全名是 http-x-http-method-override 但 rails 添加了 http 前缀,因此您应该修剪该部分。

于 2009-10-07T09:20:16.687 回答
0

有几件事可能会出错。

首先,您发送的是POSTwith ,但您的 URL 上curl有“magic”参数,并且它设置为. 根据错误,听起来 Rails 正在作为权威请求类型。尝试不这样做,看看会发生什么。_methodPUTPOST

在一个更普通的错误中,路由(config/routes.rb可以配置为不允许POST对您尝试使用的操作的请求。

如果您使用的是标准的 RESTful 控制器,这很有意义,因为您正在访问一个成员 ( /people/12),默认情况下它只允许GETPUTDELETE.

我会尝试使用并从您的请求中curl -X PUT删除。?_method=PUT

于 2009-08-09T04:59:12.547 回答