2014-10-06 164 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

回答