我有一些模板HTML和JS文件位于assets目录中,结构如下:
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
:
//这里有些代码......
返回{
pathToTemplate:“<%= asset_path'my_template.html'%>”
}
//这里有更多代码......
在开发中,这很有效。 main.js.erb
评估如下:
// Some code here ...
return {
pathToTemplate: "assets/my_template.html"
}
// More code here
在生产中,资产已预编译(已删除gzip和空格),并且指纹附加到文件名。
生产main.js.erb
应如下所示:
pathToTemplate: "assets/my_template-610dd79b5bb3c20d14b81baa891fc9dd.html"
但与开发中的相同。
是否需要将Sprockets配置为指纹HTML文件?也许这是一个错误,因为它产生了一个
带有指纹路径的清单文件,但asset_path在main.js.erb
中返回非指纹路径?
感谢您的帮助。
答案 0 :(得分:2)
Sprockets本身不再实现asset_path
- 这是Action View提供的Rails助手。
这个问题应该为你解答其余部分:
答案 1 :(得分:0)
我发现如果我获取templates目录中的所有文件夹,并将它们放在assets / images文件夹中,那么asset_path将按预期工作并返回指纹路径。我希望这是一个Rails错误。