Ruby on Rails javascript资产

时间:2014-05-04 04:31:56

标签: ruby-on-rails erb assets

我在Ruby on Rails中遇到了javascripts资产的问题。 Descripttion: 我在app / assets / javascript文件夹中有两个文件。

  
      
  1. “constans.js”包含一个常量数组“var FEATURES = new Array [”A“,”B“,”C“]”
  2.   
  3. “route.js.erb”<%= FEATURES [1]%>
  4.   

现在,我正在“route.js.erb”中实现我的功能但是我无法访问“FEATURES”数组?
我在Google上搜索过但无法找到解决方案 那么,有谁可以帮助我?谢谢! (我的第一个问题是堆栈溢出,抱歉我的英语不好)

2 个答案:

答案 0 :(得分:1)

使用

window.FEATURES = new Array [" A"," B"," C"]"

在constants.js中

并确保正在加载constants.js。

答案 1 :(得分:0)

有几个重要因素:

  
      
  1. Scoping of the variable
  2.   
  3. 在ERB中调用变量
  4.   

<强>范围

首先,您需要确保您的变量全局范围。为此,您已在constants.js中声明了变量,因此您需要确保在routes.js.erb文件之前调用此变量。您还应该考虑@user3243476的建议&amp;将其附加到window对象:

#js/constants.js
window.FEATURES = new Array["A","B","C"]

<强> ERB

其次,你正在调用routes.js.erb(这很好),但你正在调用<%= FEATURES["1"] %>。问题。这是一个Rails常量,不是 JS。这意味着即使你的变量的范围是全局的,你也试图调用一个不存在的范围。

你需要这样做:

#js/routes.js.erb
alert(FEATURES["1"]);