Domanda

se faccio questo:

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

ottengo "Solo GET, PUT e DELETE richieste sono consentiti." Perché? Rails 2.3.2

È stato utile?

Soluzione 2

Questo è in realtà un malfunzionamento in Rails versioni più recenti. La soluzione è passare l'intestazione di override metodo HTTP con put. Importante: il nome completo della testata è http-x-http-Metodo-override ma rotaie aggiunge il prefisso http così si dovrebbe ritagliare quella parte.

Altri suggerimenti

luca è corretta, è necessario inviare l'intestazione X-Http-Metodo-override con la vostra richiesta. Mettendo _method = mettere nel corpo JSON non ha funzionato per me. La riga di comando ricciolo sarà simile a questa:

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

Ci sono un paio di cose che potrebbero andare storto.

Prima di tutto, si sta inviando un POST con curl, ma hai il parametro _method "magia" sul vostro URL, ed è impostato per PUT. Sulla base l'errore, suona come Rails sta prendendo POST come il tipo di richiesta autorevole. Provatelo senza quella e vedere cosa succede.

Su un errore più pedonale, l'instradamento (in config/routes.rb potrebbe essere configurato in modo da non consentire le richieste POST per per l'azione che si sta tentando di utilizzare.

Se si utilizza un controller RESTful standard che fa buon senso, perché si sta accedendo un membro (/people/12) che di default permette solo GET, PUT e DELETE.

Vorrei provare a utilizzare curl -X PUT e far cadere il ?_method=PUT dalla vostra richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top