Pregunta

si hago esto:

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

consigo "Sólo llegar, puesto, y elimine se permitió peticiones." ¿Por qué? Carriles 2.3.2

¿Fue útil?

Solución 2

Esto es realmente un mal funcionamiento en los carriles de las versiones recientes. La solución es pasar la cabecera de anulación método HTTP con put. Importante: el nombre completo de la cabecera es http-x-http-método de anulación, pero los carriles añade el prefijo http por lo que debe recortar esa parte.

Otros consejos

Luca es correcta, es necesario enviar la cabecera X-HTTP-Method-Override con su solicitud. Poner _method = poner en el cuerpo JSON no funcionó para mí. Su línea de comandos rizo se verá así:

 curl
  -H "X-Http-Method-Override: put"
  -H "Content-Type: application/json"
  -d "{\"user\":{\"email\":\"blah@example.com\"}}"
  www.site.com/users/username.json

Hay un par de cosas que podrían ir mal.

En primer lugar, va a enviar una POST con curl, pero que tenga el parámetro _method "mágica" en su URL, y se establece en PUT. Basado en el error, suena como rieles está tomando POST como el tipo de solicitud de autoridad. Probarlo sin eso y ver qué pasa.

En un error más peatonal, el enrutamiento (en config/routes.rb podría estar configurado para no permitir solicitudes para POST de la acción que está intentando utilizar.

Si está utilizando un controlador de REST estándar, que tiene mucho sentido, porque usted está accediendo a un miembro (/people/12) que por defecto sólo permite GET, PUT y DELETE.

Me gustaría probar usando curl -X PUT y soltando el ?_method=PUT de su solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top