如果我这样做:

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

我得到 “只有GET,PUT和DELETE请求是允许的。”为什么?导轨2.3.2

有帮助吗?

解决方案 2

这实际上是一个故障在轨最近的版本。解决的办法是通过HTTP方法重写报头与放。重要提示:头的全名是http-X-HTTP-方法重写的,但轨道添加HTTP前缀,所以你应该修剪的那部分。

其他提示

卢卡是正确的,你需要与你的要求发送X-HTTP-方法-Override标头。把_method =放在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

有一对夫妇的事情,可能是想错了。

首先,你要发送与POST一个curl,但你已经得到了“神奇” _method参数上您的网址,它的设置为PUT。基于该误差,这听起来像的Rails正在POST作为权威请求类型。尝试没有这一点,看看会发生什么。

在一个更行人错误,路由(在config/routes.rb可被配置为不允许为你行动正在尝试使用POST请求。

如果您使用的是标准的RESTful控制器,这使得良好的感觉,因为你正在访问一个构件(/people/12),其通过默认只允许GETPUT,和DELETE

我会尝试使用curl -X PUT和您的要求丢弃?_method=PUT

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top