从javascript/jquery到ruby/sinatra的多维数组
请问如何将二维数组从javascript传递到ruby?我在客户端有这样一个功能:从javascript/jquery到ruby/sinatra的多维数组,ruby,ajax,json,multidimensional-array,sinatra,Ruby,Ajax,Json,Multidimensional Array,Sinatra,请问如何将二维数组从javascript传递到ruby?我在客户端有这样一个功能: function send_data() { var testdata = { "1": { "name": "client_1", "note": "bigboy" }, "2": { "name": "client_2", "note": "smallboy"
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,但无法将哈希转换为字符串
有人能帮忙吗,或者发一小段正确的代码?谢谢您可能希望在javascript端手动构建JSON:
[[{'object':'name1'},{'object':'name2'}],[...],[...]]
这将构建一个包含对象的数组
可能是这样的:
testdata = [[{
"1": {
"name": "client_1",
"note": "bigboy"
}],
[{"2": {
"name": "client_2",
"note": "smallboy"
}]
}]
我可能有点不对劲,但这应该接近它的样子。我不确定这是否有用,但我有两个想法:序列化字段和/或迭代数组 通过设置序列化必须存储子数组的字段,我成功地将json数组放入activerecord对象中:
class MyModel < ActiveRecord::Base
serialize :tags
end
来回转换似乎有点麻烦,但我发现这是处理数组最明显的方法
f = File.read("myarrayof.json")
jarray = JSON.load(f)
jarray.each { |j| MyModel.create.from_json(j.to_json).save }