У Rails возникают проблемы с разбором многостраничной формы json?

У меня возникли некоторые проблемы с изучением того, почему Rails 3.2.6 анализирует составной запрос POST, содержащий json.

«Оскорбительная» команда curl:

curl -i -X POST --silent http://localhost:3000/foo.json --form foo='{"name":"bar"};type=application/json'

Рельсы интерпретируются как:

p params[:foo] #=> "{\"name\":\"bar\"}"

Обратите внимание, что значение представляет собой строку, а не хэш (проанализированного JSON).

Заголовки, отправленные curl, кажутся правильными:

> POST /foo.json HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:3000
> Accept: */*
> Content-Length: 208
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------959d0620faa3

Тип multipart также кажется правильным:

------------------------------959d0620faa3
Content-Disposition: form-data; name="foo"
Content-Type: application/json

{"name":"bar"}
------------------------------959d0620faa3--

Может ли кто-нибудь помочь мне понять, как лучше всего добраться до места, где params[:foo] возвращает проанализированный хэш json, а не его строковое представление?

Спасибо.


person DBA    schedule 16.07.2012    source источник


Ответы (1)


Rails не анализирует параметры json по умолчанию, вам придется делать это вручную.

person Oscar Del Ben    schedule 16.07.2012
comment
Может ли кто-нибудь уточнить, как должно читаться его выражение curl? - person Evolve; 20.07.2012