簡體   English   中英

使用sinatra將數組從JavaScript傳遞到ruby

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM