我有把手模板(* .hbs.jst.erb),我想动态插入asset_path
动态如下:
{{#each subjects}}
<img src="<%= asset_path("icons/subjects/{{slug}}.png") %>"/>
{{/each}}
这将呈现icons/subjects/danse.png
而不是assets/icons/subjects/danse.png
,但如果我放<img src="<%= asset_path("icons/subjects/danse.png") %>"/>
它将生成写html。
知道这是否可行?
答案 0 :(得分:0)
好的,好消息是你的流程是合法的,因为它在本地运作
问题是Rails uses asset fingerprinting
如何使资产保持一致。使用静态资产(使用Heroku或Amazon)时,让所有指纹正常工作至关重要
我们解决这个问题的方式有两个方面:
确保动态加载资产
您已经使用.erb
完成了此操作,但为了使资产正确地使用指纹识别,必须动态调用它们,以便Rails可以分配新的文件名,而不是静态名称。
具体来说,您必须使用.scss
&amp;每次要调用资产时.erb
。这是很多人犯的错误,就像你使用静态CSS一样,RAILS在预编译时无法调用动态路由。这只是您在使用此过程时必须记住的事项
到目前为止,我已经正确地完成了这项工作
正确编制资产
我们预先编制资产的过程有两个方面:
本地: rake assets:precompile RAILS_ENV=production
<强>的Heroku:强>
run the labs command to enable precompiling
heroku labs:enable user-env-compile -a myapp
每次部署应用时(并且已更改资产,运行):
heroku run rake assets:precompile --app [your app name]