2013-06-22 46 views
2

我正在使用Rails 3.2.13。erb in coffeescript(Rails 3.2.13)?

看过这里的一些帖子后,它看起来像为了在CoffeeScript中使用erb,你的文件只需要有一个.js.coffee的扩展名,而不是.js.coffee.erb(奇怪)。

但是,我似乎仍然无法得到它的工作。例如,我有一个demo.js.coffee文件如下:

console.log '<%= root_url %>' 

其中,所有的处理之后,似乎产生:

(function() { 
    console.log('<%= root_url %>'); 

    $(function() {}); 

}).call(this); 

正如你所看到的,CoffeeScript的处理,但该局ISN “T。这是怎么回事?

+0

改变它'.erb'并报告:-) – gmaliar

+0

@Guy将其更改为在'demo.js.coffee.erb'结果:'未定义的局部变量或方法“root_url''。这就像'root_url'不能从javascript资源中识别出来... –

+1

我相信这会回答你的问题http://stackoverflow.com/questions/6725629/route-helpers-in-asset-pipeline – omarshammas

回答

6

这是令人困惑的,在某些情况下.erb扩展是必需的,而在某些情况下则不是。我发现,当处理资产目录下的咖啡脚本文件时,它是必需的,但是,当它隐含在视图内时。

所以你的情况应该叫demo.js.coffee.erb

的第二个问题是,再培训局正在应用范围之外进行评估,所以你需要以下行

'<% url = RailsAppName::Application.routes.url_helpers %>' 
console.log '<%= url.root_path %>' 

类似的问题可以在这里找到Route helpers in asset pipeline

+0

啊。我忘了JS文件也可以进入views目录,而不仅仅是资产目录。 –

+0

在Rails 4中,我必须添加only_path:true来加入'url.root_path(only_path:true)'以避免默认的主机异常。 – shedd