2

我有车把模板(*.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。

知道这是否可能吗?

4

1 回答 1

0

好的,好消息是您的流程是合法的,因为它在本地运行

问题在于 Rails 如何使用asset fingerprinting来保持资产一致。使用静态资产(使用 Heroku 或 Amazon)时,让所有指纹正常工作至关重要

我们解决这个问题的方法有两个:


确保动态加载资产

您已经使用您的.erb.

具体来说,每次调用资产时都必须使用.scss& 。.erb这是很多人犯的一个错误,好像你用的是静态CSS,RAILS在预编译的时候不能调用动态路由。这只是您在使用此过程时必须牢记的事情

到目前为止,我认为你已经正确地做到了这一点


正确预编译资产

我们预编译资产的过程有两个方面:

  1. 当地的: rake assets:precompile RAILS_ENV=production

  2. 赫鲁库:

    运行 labs 命令以启用预编译

    heroku labs:enable user-env-compile -a myapp


    每次部署应用程序(并更改资产,运行)时:

    heroku run rake assets:precompile --app [your app name]

于 2013-11-07T10:25:12.617 回答