Rails 4资产管道不会使用asset_path引用其他资产来覆盖资产

因此,资产管道摘要存在一个小问题,即我们有许多HTML模板作为资产(对于AngularJS),我们使用asset_path帮助程序在Javascript文件中引用这些资产的路径。 不幸的是,由于资产预编译步骤(和Heroku)检查更改的方式,对模板进行更改不会导致重新编译javascript文件。

所以基本上在像application.coffee.erb这样的文件中我们可能有类似的东西:

 url = '' 

当我们运行rake assets:precompile会变成/assets/views/template-1023911231.html ,它具有摘要值但是如果template.html.slim被更改,摘要将会改变,但是因为application.coffee.erb没有从根本上改变了它没有重新编译,并继续指向旧的摘要。

思考? 解决方案? 这实际上对我来说似乎是个错误。

更新

目前我最好的解决方案是在application.rb中更新资产版本,如果我们需要更改我们的HTML模板资产但没有更改javascript。

这里提出了一个解决方案,它涉及使用depend_ondepend_on_asset指令。 在我的情况下,将此添加到.js.erb文件中:

 //= depend_on_asset views/template.html url = '<%= asset_path('views/template.html') %>' 

每次根据需要更改views/template.html ,这将重新编译此文件。

您是否尝试过运行rake assets:clean然后rake assets:precompile以重新编译?

更新不确定这是否与您面临的问题相同但听起来确实相似。 在github上看看这个Heroku问题 。

如果它是相同的(或类似的),Schneems提到它需要对资产文件进行3次更改,以便链轮清除文件。

建议的步骤是运行以下4次并比较输出:

 echo "body {background-color: red}">> app/assets/stylesheets/application.css git add .; git commit -m "assets changed 1" git push heroku master heroku run ls public/assets | awk /application/ 

最好根据自己的情况修改上述内容。