2012-09-23 54 views
2

我正在构建一个iOS应用程序,它需要发布到RoR API。如何使用curl发布JSON数据并将其用于RoR?

要测试POST,我运行这个命令:

curl -d @/tmp/data localhost:3000/api/ratings 

其中,/ tmp /数据包含散列的数组:

[ {  "uid": "gilt_162929239",  "rate": 1 } ] 

在Ruby中,则params看起来是这样的:

[1] pry(#<Api::PromotionRatingsController>)> params 
=> {" {  \"uid\": \"good_162929239\",  \"rate\": 1 } "=>nil, 
"format"=>"json", 
"action"=>"create", 
"controller"=>"api/ratings"} 

我该如何让Rails创建哈希数组来迭代每个?

编辑:我看到我缺少标题。

添加到curl命令行:

--header "Accept: application/json" --header "Content-type: application/json" 

现在,这里是我的PARAMS:

[1] pry(#<Api::PromotionRatingsController>)> params 
=> {"_json"=>[{"uid"=>"good_162929239", "rate"=>1}], 
"format"=>"json", 
"action"=>"create", 
"controller"=>"api/ratings", 
"promotion_rating"=>{"_json"=>[{"uid"=>"good_162929239", "rate"=>1}]}} 

还是不正确的。

+1

不是Ruby开发者,但通常你会解码那个json字符串,它将它转换成本地数据结构。然后,您可以像使用任何其他本机结构一样使用您的宿主语言的数组/对象/散列/任何操作工具。 –

+0

在RoR IIRC中,它应该自动将JSON数据转换为本机对象。但这不是为我而发生的。 – Eric

+0

同样,我偶尔在RoR上工作,因此不会将此作为答案。你可以从'params'哈希中提取JSON字符串,将它分配给一个对象,然后按照这篇文章中的解释使用'json' gem? http://stackoverflow.com/questions/7964282/convert-json-to-ruby-hash。 – verisimilitude

回答

0

根据this

如果您开启您的初始化或config.wrap_parameters 调用wrap_parameters在你的控制器,你可以放心地忽略在JSON/XML参数 根元素。这些参数将被克隆为 ,并根据您的控制器的名称默认封装在密钥中。

所以,我的猜测是你需要包含一个根元素,或者设置config.wrap_parameters

相关问题