當我在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"}
的JSON被貼不是很有效。數據中的字符串需要使用雙引號 - 「-d」{「some_model」:{「version」:「6.6」,「order_by」:606}}''。 – 2014-10-06 22:34:47
只是一個簡短的評論 - 我使用ruby'2.1.1'和'rails','4.1.6並且在JAvascript中使用JSON將數據發送到rails控制器。如果有任何幫助,我可以發佈代碼。皮埃爾 – user1854802 2014-10-06 22:36:41
我試過兩種方式,@Jonathan,行爲沒有區別。我已更新該問題以符合您的建議。 – 2014-10-06 22:41:01