Ruby on rails Rails中把手模板中的动态资源路径

Ruby on rails Rails中把手模板中的动态资源路径,ruby-on-rails,erb,handlebars.js,Ruby On Rails,Erb,Handlebars.js,我有把手模板(*.hbs.jst.erb),我想插入asset_pathdynamicali,如下所示: {{#each subjects}} <img src="<%= asset_path("icons/subjects/{{slug}}.png") %>"/> {{/each}} {{{#每个主题} "/> {{/每个}} 这将呈现icons/subjects/danse.png而不是assets/icons/subjects/danse.png,但是如果我

我有把手模板(*.hbs.jst.erb),我想插入
asset_path
dynamicali,如下所示:

{{#each subjects}}
  <img src="<%= asset_path("icons/subjects/{{slug}}.png") %>"/>
{{/each}}
{{{#每个主题}
"/>
{{/每个}}
这将呈现
icons/subjects/danse.png
而不是
assets/icons/subjects/danse.png
,但是如果我放置
“/>
,它将生成编写html


知道这是否可行吗?

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

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

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


确保动态加载资产

您已经用
.erb
完成了这项工作,但是为了让资源正确地使用fingerpriting,必须动态调用它们,以便Rails可以指定新的文件名,而不是静态文件名

具体来说,每次调用资产时都必须使用
.scss
&
.erb
。这是许多人犯的一个错误,就像使用静态CSS一样,RAILS在预编译时无法调用动态路由。在使用此过程时,您必须牢记这一点

到目前为止,我认为你做得对


正确预编译资产

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

  • 本地:
    rake资产:预编译RAILS\u ENV=production

  • heroku:

    heroku实验室:启用用户环境编译-myapp


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

    heroku运行rake资产:预编译——应用程序[您的应用程序名称]


  • 你试过使用
    image\u path
    而不是
    asset\u path
    吗?我刚试过。奇怪的是,它为每个图像生成不同的路径,但它们不起作用。图像路径生成:
    /images/icons/subjects/dance.png
    hmmmm!在路径中添加一个前导斜杠怎么样<代码>两者都不是。。。但是如果我使用但不在登台中,它可以在我的本地机器上工作…嗯-我可以问一下您使用的登台环境是什么吗?如果您正在使用heroku之类的工具,您可能会遇到预编译资产的问题。我按照您的建议做了,但生成的资产仍然是一样的。我可能错过了什么。。。!这也打破了令人敬畏的图标:/p,但不是在舞台上。。。我想我会尝试一种不同的方法。我想我会使用一个类,并将图像放在CSS中,因为我的列表很短而且可以预测。但是谢谢你的帮助!:)没问题-如果你需要更多的想法,请告诉我