Sto tentando di eseguire il debug di un problema in cui Rails non sta decodificando i dati POST JSON.Rails La richiesta JSON non viene analizzata correttamente nei parametri del post
I log del server mostrano:
2011-12-14T06:44:44+00:00 app[web.2]: Started POST
2011-12-14T06:44:44+00:00 app[web.2]: Processing by PostsController#create as */*
2011-12-14T06:44:44+00:00 app[web.2]: Parameters: {"{\"athlete_id\":\"\",\"known_as\":\"abc\",\"email\":\"[email protected]\",\"result\":\"112233\",\"rx\":false,\"mods\":\"thkjth\",\"notes\":\"\"}"=>nil, "affiliate_id"=>"testaffiliate", "wod_id"=>"12345"}
Nota che la stringa JSON non viene analizzato - Rails consiste nell'assegnare come una chiave nella hash, che punta a un valore pari a zero. Qualcuno ha qualche idea prima di scrivere un before_filter che prova a JSON.parse tutte le chiavi params?
Non penso che questo sia rilevante poiché sto inviando e ricevendo dati okay, ma questo problema si verifica durante una richiesta CORS da IE (utilizzando XDomainRequest).
Ho scoperto che facendo questo (su unicorno) ho il corpo della richiesta incluso nei parametri come chiave: '{'theBodyOfRequest' => nil,: controller => users,: action => 'update'}' A seconda di il tuo caso d'uso potrebbe causare problemi. Dato che è il primo parametro, ho aggiunto 'params.shift' per rimuoverlo. – Peter
@collin, yeah - I dati che stavo facendo POSTing erano originariamente JSON '{: foo =>" bar "}' (che era stato modificato per l'invio) quindi i parametri del controller erano: '{" {\ "pippo \" => \ "bar \"} => nil, "controller" => "users" ...} ' – Peter
@Peter, sembra il problema originale che ho descritto nella domanda, non è vero? il filtro è in esecuzione? – colllin