0

我正在使用 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');
      }
    });

当它到达正确的控制器时,我可以访问称为 match_id 的查询字符串“1234”(在路由文件中)

  match "home/scoring/:match_id/update" => "home#update"

但是我无法访问 POST 元素,我的根元素“company”应该可以作为 params[:company] 访问,但它只是返回一个 nil

查看控制台,我可以看到数据被传递

在 2013-04-11 00:43:45 +0100 由 HomeController#update 作为 JSON 参数处理 127.0.0.1 开始 POST "/home/scoring/1365750000348629332744/update": {" name\": \"acme\", \"address\": \"胡萝卜街123号\"}}"=>nil, "match_id"=>"136575000034 8629332744"}

虽然“=> nil”有点令人担忧(为什么它是 nil?)我无法找到为什么我这会导致我这样的问题。

4

1 回答 1

3

您将一个已经编码的字符串传递给 jQuery,然后它再次对其进行编码。

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

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

... 并且 jQuery 将为您处理将其编码为 JSON。就目前而言,您params包含一个键,该键是字符串"{"company": {"name": "acme", "address": "123 carrot street"}}",它映射到的值nil

于 2013-04-11T00:06:05.850 回答