У меня возникли некоторые проблемы с изучением того, почему 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, а не его строковое представление?
Спасибо.