我使用jquery ajax调用将一些数据发布到我的ROR应用程序
我已将此部分删除为硬编码,以便我可以使其工作
var testjson = '{"company": {"name": "acme", "address": "123 carrot street"}}';
$.ajax({
type: "POST",
dataType: "JSON",
url: 'http://localhost:3000/home/scoring/' + 1234 + "/update",
data: datas,
success: function(){
alert('success');
}
});
当它到达正确的控制器时,我可以访问查询字符串“1234”,这个名为match_id(在路径文件中)
match "home/scoring/:match_id/update" => "home#update"
但我无法访问POST元素,我的根元素“company”应该可以作为params [:company]访问,但它只返回一个nil
查看控制台我可以看到数据被传递
开始发布“/ home / scoring / 1365750000348629332744 / update”for 127.0.0.1 at 2013-04-11 00:43:45 +0100由HomeController处理#update为JSON参数:{“{\”company \“:{\”name \“: \“acme \”,\“地址\”:\“123胡萝卜街\”}}“=> nil, “match_id”=>“136575000034 8629332744”}
虽然“=> nil”有点担心(为什么没有?)我无法找到为什么我这会导致我这样的问题。
答案 0 :(得分:3)
您正在将已编码的字符串传递给jQuery,然后再对其进行编码。
您只需将数据存储为实际的JavaScript哈希值,而不是字符串......
var testjson = {"company": {"name": "acme", "address": "123 carrot street"}};
... jQuery将为您编写JSON编码。目前,您的params
包含一个密钥,该密钥是字符串"{"company": {"name": "acme", "address": "123 carrot street"}}"
,其映射到nil
的值。