如何将二维数组从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。
有人可以帮忙,或者发一小段正确的代码吗?谢谢
答案 0 :(得分:0)
您可能希望在javascript端手动构建JSON:
[[{'object':'name1'},{'object':'name2'}],[...],[...]]
这将构建一个包含对象的数组数组。
看起来像这样:
testdata = [[{
"1": {
"name": "client_1",
"note": "bigboy"
}],
[{"2": {
"name": "client_2",
"note": "smallboy"
}]
}]
我可能会有一些东西,但这应该接近它的样子。
答案 1 :(得分: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 }
转换来回看起来有点麻烦,但我发现这是处理数组最明显的方法。