在javascript函数中获取ruby数组的每个i元素(转义和取消转义)?

在javascript函数中获取ruby数组的每个i元素(转义和取消转义)?,javascript,jquery,ruby-on-rails,arrays,ruby,Javascript,Jquery,Ruby On Rails,Arrays,Ruby,比如说,在ruby中我有一个数组:ruby\u数组=[1,2,3,4,5] 在我的javascript脚本中,我希望能够将每个元素从ruby_数组推送到javascriptArray: var javascriptArray = []; for (i = 0; i < <%= raw ruby_array.size %>; i++) { alert("The " + i + ". element of my ruby array is: &

比如说,在ruby中我有一个数组:
ruby\u数组=[1,2,3,4,5]

在我的javascript脚本中,我希望能够将每个元素从
ruby_数组
推送到
javascriptArray

var javascriptArray = [];

for (i = 0; i < <%= raw ruby_array.size %>; i++) {
   alert("The " + i + ". element of my ruby array is: " + <%= raw ruby_array[i] %>);
   // Problem: I guess, I cannot get the i javascript variable when calling ruby_array[i]
   // How do I unescape the i?

   // Now push every ruby_array element into my javascriptArray
   // Same problem like above
   javascriptArray[i] = Number(<%= raw ruby_array[i] %>);
}
var javascriptArray=[];
对于(i=0;i<;i++){
警报(“我的ruby数组的“+i+”元素是:”+);
//问题:我想,在调用ruby_数组[I]时,我无法获取I javascript变量
//我怎样才能摆脱我?
//现在,将每个ruby_数组元素推入我的javascriptArray
//和上面一样的问题
javascriptArray[i]=Number();
}
我收到的错误消息是:

SyntaxError:应为表达式,Get')'

注意:如果我将[I]留在
ruby\u数组[I]
之外,则输出正常:

0。我的ruby数组的元素是:1,2,3,4,5

第四。我的ruby数组的元素是:1,2,3,4,5


我还尝试了
.to_json.html_safe
,结果相同。那么如何从javascript代码中的ruby数组中获取第I个元素呢?

这两个元素都将转义为js

您可以尝试:

var javascriptArray = <%= escape_javascript ruby_array.to_json %>
var javascriptArray=

var javascriptArray=

我还没有测试过它,但它应该可以工作

var javascriptArray = [<%= j(ruby_array.join(',')) %>];
var javascriptArray=[];

您的javascript变量
i
ah中不为人所知。。。正如你在评论中所说的,我想这就是问题所在。那么,我怎样才能取消对I的浏览并告诉ruby我的javascript循环中的I的意思是:)?你不能以这种方式互操作javascript和ruby,你需要将你的ruby数据转换成一个普通的javascript数组,然后通过:
jsArray[I]访问它
@praszyk:哦,很高兴知道。有一个问题:当我将ruby数组转换为javascript数组时,javascript数组中的元素是否也是数字?或者我必须把它们也转换成数字吗?不,如果ruby数组中的任何值是字符串,那么你就会得到语法错误。您需要使用escape_javascript…哦,天哪,这似乎比创建循环并将每个ruby项推入新的javascriptArray要容易得多。谢谢一个问题:由于我需要元素作为数字,新的javascriptArray是否也包含数字,还是字符串?
var javascriptArray = [<%= j(ruby_array.join(',')) %>];