【问题标题】:erb in coffeescript (Rails 3.2.13)?咖啡脚本中的 erb(Rails 3.2.13)?
【发布时间】:2013-06-19 15:13:20
【问题描述】:

我正在使用 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 未处理。怎么回事?

【问题讨论】:

  • 将其更改为.erb 并报告回来:-)
  • @Guy 将其更改为 demo.js.coffee.erb 会导致:undefined local variable or method 'root_url'。就像 root_url 在 javascript 资产中无法识别...
  • 我相信这回答了你的问题stackoverflow.com/questions/6725629/…

标签: javascript ruby-on-rails ruby-on-rails-3 coffeescript erb


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 啊。我忘了JS文件也可以放在views目录中,而不仅仅是assets目录。
  • 在 Rails 4 中,我必须将 only_path: true 添加到 url.root_path(only_path: true) 以避免默认主机异常。
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多