2014-10-06 113 views
1

当我在POST请求中发送JSON数据时,我的控制器看不到数据。等效的XML工作正常,Rails 2不支持JSON吗?是否还有其他需要安装的宝石?Rails 2是否支持JSON POST请求?

我正在使用Rails 2.0.2,并且为我的模型生成了脚手架。我可以使用生成的代码使用浏览器创建记录,也可以通过使用curl发送XML POST请求来创建记录。

现在我想更改生成的代码来支持JSON而不是XML。我用format.json替换了format.xml调用,GET请求现在让我回到了很好的JSON。

但是,当我尝试通过发送JSON POST请求创建记录时,没有任何参数传递给我的控制器。

追查问题,我代替我的控制器与此create()方法:

# POST /some_models 
# POST /some_models.json 
def create 
    render :json => params 
end 

这只是转储params哈希的内容,所以我可以看看什么东西被通过。

我使用这种卷曲声明XML数据测试:

curl --request POST --cookie cookies.txt -d "<some_model version='6.6' order_by='606'/>" -H "Content-Type:text/xml" http://localhost:3000/some_models.xml 

这工作正常,我看到这样的输出:

{"some_model": {"version": "6.6", "order_by": "606"}, "format": "xml", "action": "create", "controller": "some_models"} 

现在,我尝试用JSON数据相当于:

curl --request POST --cookie cookies.txt -d '{ "some_model": {"version": "6.6", "order_by": 606} }' -H "Content-Type:application/json" http://localhost:3000/some_models.json 

现在我没有在params散列中得到一个some_model密钥:

{"format": "json", "action": "create", "controller": "some_models"} 
+1

的JSON被贴不是很有效。数据中的字符串需要使用双引号 - “-d”{“some_model”:{“version”:“6.6”,“order_by”:606}}''。 – 2014-10-06 22:34:47

+0

只是一个简短的评论 - 我使用ruby'2.1.1'和'rails','4.1.6并且在JAvascript中使用JSON将数据发送到rails控制器。如果有任何帮助,我可以发布代码。皮埃尔 – user1854802 2014-10-06 22:36:41

+0

我试过两种方式,@Jonathan,行为没有区别。我已更新该问题以符合您的建议。 – 2014-10-06 22:41:01

回答