我在 Rails 控制器中定义了一个数组:
str_array = ["Hi","hello"]
我需要在存储在 assets 下的 javascript 文件中访问这个数组。我在我的 js 中定义了一个可变类型的数组数组。我尝试像这样访问但失败了:
var js_arr = [<%= raw @str_array.to_json %>];
有没有其他方法可以访问我的 javascript 中的 rails 数组?
我在 Rails 控制器中定义了一个数组:
str_array = ["Hi","hello"]
我需要在存储在 assets 下的 javascript 文件中访问这个数组。我在我的 js 中定义了一个可变类型的数组数组。我尝试像这样访问但失败了:
var js_arr = [<%= raw @str_array.to_json %>];
有没有其他方法可以访问我的 javascript 中的 rails 数组?
您是否为该 JavaScript 文件添加了 .erb 扩展名?
有两种方法。
1) 必要时通过 ajax 将其传递给 javascript。(例如,在按钮单击等上)。
2) 将内联 javascript 放入要访问的视图模板(erb、haml 或 w/e)之一,然后在方法调用中使用 #{rails_array}.to_json 传递 rails 数组。
第一个更干净,更可测试,并且从长远来看更易于维护。第二个更容易实现。
将东西从 RoR 传递到 JS 的一种非常干净的方法是gon gem。
没有带有 erb 或类似东西的讨厌的打印变量。
您会得到一个名为的对象gon
,您可以将数据堆积到您的 RoR 控制器中。添加include_gon
到您的布局中,瞧—— gon 对象在 JS 中也可用。