2

我正在使用 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 已处理,但 erb 未处理。这是怎么回事?

4

1 回答 1

6

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

所以在你的情况下,它应该被称为demo.js.coffee.erb

第二个问题是 erb 正在应用程序上下文之外进行评估,因此您需要以下几行

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

可以在此处找到类似的问题Route helpers in assets pipeline

于 2013-06-23T18:46:30.007 回答