2012-07-16 75 views
2

为了解释为什么Rails 3.2.6解析包含json的多部分POST请求,我遇到了一些问题。Rails在解析json multipart表单时遇到问题?

的 '冒犯' curl命令:

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

Rails的解释为:

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

注意的值如何是一个字符串,而不是(解析的JSON的)的散列。

由卷曲发送的头似乎正确:

> 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 

的多的类型也似乎是正确的:

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

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

有人能帮助我了解的最好的方式去一个地方,PARAMS [:foo]返回解析的json散列,而不是它的字符串表示形式?

谢谢。

回答

1

默认情况下,Rails不会解析json参数,您必须手动完成。

+0

这是相当不幸的,但谢谢:) – DBA 2012-07-17 10:42:38

+1

任何人都可以详细阐述他的卷曲声明应该如何阅读? – Evolve 2012-07-20 00:53:08