ROR中的POST参数无法访问但在控制台中可见

时间:2013-04-10 23:52:08

标签: javascript ruby-on-rails ruby ajax

我使用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”有点担心(为什么没有?)我无法找到为什么我这会导致我这样的问题。

1 个答案:

答案 0 :(得分:3)

您正在将已编码的字符串传递给jQuery,然后再对其进行编码。

您只需将数据存储为实际的JavaScript哈希值,而不是字符串......

var testjson = {"company": {"name": "acme", "address": "123 carrot street"}};

... jQuery将为您编写JSON编码。目前,您的params包含一个密钥,该密钥是字符串"{"company": {"name": "acme", "address": "123 carrot street"}}",其映射到nil的值。