[英]Passing an array from javascript to ruby with sinatra
我要完成的是將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嗎?
是。 使用js將數組轉換為json(字符串):
var data = JSON.stringify(yourArray);
將字符串發送到您的ruby腳本。 然后使用ruby將字符串解析為一個數組:
require 'json'
arr = JSON.parse(the_string)
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.