2

我在 assets 目录中有一些模板 HTML 和 JS 文件,结构如下:

app
 - assets
   - templates 
     - my_template.html
   - javascripts
     - application.js
     - main.js.erb

其中application.js包含标准 sprockets 指令://= require main

main.js.erb包含对路径的引用my_template.html: main.js.erb: // 这里有一些代码 ... return { pathToTemplate: "<%= asset_path 'my_template.html' %>" } // 这里有更多代码 ...

在开发中,这很好用。main.js.erb被评估为以下内容:

// Some code here ...
return {
    pathToTemplate: "assets/my_template.html"
}
// More code here

在生产中,资产被预编译(gzipped 和空格被删除),并且指纹被附加到文件名。

生产main.js.erb 如下所示:

pathToTemplate: "assets/my_template-610dd79b5bb3c20d14b81baa891fc9dd.html"

但与开发中的相同。

Sprockets 是否需要配置为还指纹 HTML 文件?也许这是一个错误,因为它正在生成一个带有指纹路径的清单文件,但是asset_path 正在返回一个非指纹路径main.js.erb

谢谢你的帮助。

4

2 回答 2

2

Sprockets 本身不再实现asset_path- 这是 Action View 提供的 Rails 助手。

https://github.com/rails/rails/blob/cd0b6233ae22f6bc8407d240eb2f933ca122f86d/actionpack/lib/action_view/helpers/asset_url_helper.rb#L120

这个问题应该为您回答其余的问题:

Ruby on Rails 4 和asset_path 的使用

于 2013-08-28T19:31:38.853 回答
0

我发现如果我获取模板目录中的所有文件夹,并将它们放在 assets/images 文件夹中,那么asset_path 会按预期工作并返回指纹路径。我希望这是一个 Rails 错误。

于 2013-08-24T16:17:48.037 回答