1

请问如何将二维数组从javascript传递给ruby?我在客户端有这个:

function send_data() {
    var testdata = {
        "1": {
            "name": "client_1",
            "note": "bigboy"
        },
        "2": {
            "name": "client_2",
            "note": "smallboy"
        }
    }

    console.log(testdata);
    $.ajax({
      type: 'POST',
      url: 'test',
      dataType: 'json',
      data: testdata
    });
  }

这在服务器端:

post '/test' do p params end

但我做错了。我能在服务器端得到的最好的东西是

{"1"=>"[object Object]", "2"=>"[object Object]"}

我尝试在客户端添加 JSON.stringify 并在服务器端添加 JSON.parse ,但第一个导致

{"{\"1\":{\"name\":\"client_1\",\"note\":\"bigboy\"},\"2\":{\"name\":\"client_2\",\"note\":\"smallboy\"}}"=>nil}

而后者抛出了 TypeError - 无法将 Hash 转换为 String。

任何人都可以帮忙,或者发布一小段正确的代码,好吗?谢谢

4

2 回答 2

0

我不确定这是否会有所帮助,但我有两个想法:序列化字段和/或迭代数组。

通过设置序列化必须存储子数组的字段,我设法将 json 数组放入 activerecord 对象中:

class MyModel < ActiveRecord::Base
  serialize :tags
end

并使用迭代器来处理 json 数组:

f = File.read("myarrayof.json")
jarray = JSON.load(f)
jarray.each { |j| MyModel.create.from_json(j.to_json).save }

来回转换似乎有点麻烦,但我发现它是处理数组的最明显方式。

于 2010-06-30T13:22:23.050 回答
0

您可能希望在 javascript 端手动构建 JSON:

[[{'object':'name1'},{'object':'name2'}],[...],[...]]

这将构建一个包含对象的数组数组。

它可能看起来像这样:

testdata = [[{
        "1": {
            "name": "client_1",
            "note": "bigboy"
        }],
        [{"2": {
            "name": "client_2",
            "note": "smallboy"
        }]
    }]

我可能在这里有些东西,但这应该接近它的样子。

于 2009-10-30T02:35:18.200 回答