我想要实现的是将一个2D数组从javascript传递给ruby会识别的东西。所有对象都是字符串
我一直在使用gon-sinatra,但它并没有完全符合我的需要。 我可以将存储我希望传递的字符串作为gon.text传递
@temp = gon.text
array.push(@temp)
这不起作用,因为它将gon.text显示为nil对象类型,当我想要它作为字符串时。 gon.text.to_s
返回一个空字符串,所以当我尝试显示它时,没有任何反应。 alert("<%= @temp %>") // displays an empty string
我在这里有点不知所措,并且不知道解决这个问题的最佳方法。将数组存储为json更好,然后使用ruby读取json吗?
答案 0 :(得分:2)
是。使用js:
将数组转换为json(字符串)var data = JSON.stringify(yourArray);
将字符串发送到ruby脚本。然后将字符串解析为带有ruby的数组:
require 'json'
arr = JSON.parse(the_string)
答案 1 :(得分:1)
在Javascript中,您可以执行以下操作:
var myArray = [ ['str1','str2'], ['str3','str4'] ];
$.get('/endpoint', { myArray: myArray })
你和sinatra的终点是:
get 'endpoint' do
myArrayStr = params[:myArray]
error!('invalid array') unless myArrayStr
@myArray = JSON.parse(myArrayStr)
gon.rabl 'goners/yourFile.rabl', :instance => self
end
在您的gon文件中,您可以参考:
alert(gon.myArray[0][0]); // str1