2013-02-25 26 views
0

我在我的轨道控制器定义的数组存储:如何访问在javascript中轨阵列下资产​​

str_array = ["Hi","hello"] 

我需要在资产存储在我的JavaScript文件访问此数组。 我已经在我的js中定义了一个变量类型的数组数组。我试图访问这样的,但未能:

var js_arr = [<%= raw @str_array.to_json %>]; 

是否有任何其他的方式来访问我的javascript轨道阵列?

回答

0

一个很干净的方法,从回报率传递的东西JS是gon gem

与雇员再培训局或这样的东西没有讨厌的印刷变量。

你会得到一个名为gon一个对象,你可以堆到的数据在你的回报率控制器。将include_gon添加到您的布局,并且voilà - gon对象也可以在JS中使用。

+0

我试过这个宝石和它的工作..谢谢。 – 2013-02-25 21:12:54

0

您是否添加了.erb扩展,JavaScript文件?

+0

另外,看看Gon:https://github.com/gazay/gon。 Gon允许你从你的控制器设置JS变量。 – pdoherty926 2013-02-25 19:52:18

+0

感谢您的回答。我会通过这个尝试这个选项。 – 2013-02-25 20:51:25

+0

其工作..非常感谢。 – 2013-02-25 21:13:17

0

有两种方法。

1)通过AJAX它传递到JavaScript作为必要的。 (例如在按钮点击等)。

2)将inline javascript放入您想要访问它的视图模板(erb,haml或w/e)之一中,然后在方法调用中将#{rails_array} .to_json传递给Rails数组。

首先是更清洁,更可测试,并且在长期更易于维护。第二个更容易实现。

+0

嗨亚伯拉罕..谢谢你的答案..你可以请第一点清楚,因为我试图把ajax部分放在我的index.html.erb中,并将数组传递给我的js,但它不显示在页面上。 – 2013-02-25 20:47:05