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



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

在我的javascript脚本中,我希望能够将每个元素从我的ruby_array推送到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] %>);
}

我收到的错误消息是:

语法错误:预期的表达式,得到')'

注意:如果我将[i]保留ruby_array[i],则输出正常:

我的红宝石数组的 0. 元素是:1,2,3,4,5

我的红宝石数组的 4. 元素是:1,2,3,4,5

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

这两个都将转义 js。

您可以尝试:

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

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

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

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

最新更新