Rails 4.1图像网址仍在调用未编译的资产

时间:2014-04-10 20:49:26

标签: css ruby-on-rails precompile

所以我的导轨网站大部分都在生产,但我意识到我错过了一些图像。我查看了我的预编译css文件,图片网址直接调用了像url(/assets/gototop.png)这样的图片,因为我的图像现在像gototop-6c119f88349ddd550e3efcf5bbefe1ad.png,所以它找不到。

如何让我的CSS指向预编译的图像文件?

更新:同样如链接文件中所述,我意识到我可以使用asset_path方法但不幸的是我使用的是scss,我不能只将.erb添加到文件的末尾...似乎rails不喜欢使用多个编译器。 (我试过了)

2 个答案:

答案 0 :(得分:1)

这是由asset fingerprinting(不仅仅是Rails 4.1问题)引起的常见问题


修复它的方法是在CSS中使用预编译器(Rails附带SASS)。预编译器基本上意味着您可以处理像erb这样的CSS文件 - 使用某些帮助程序&变量:

#app/assets/stylesheets/application.css.sass
body
  background: asset_url("/layout/gototop.png")

asset_url(似乎现在称为asset-url)基本上允许您通过指纹名称调用资产

根据我们的讨论,您还需要使用rake assets:precompile RAILS_ENV=production执行此操作。在控制台中触发此命令后,它按预期工作

答案 1 :(得分:0)

您必须先通过ERB执行此代码:

第1步重命名RAILS_ROOT/app/assets/stylesheets/application.css.sassRAILS_ROOT/app/assets/stylesheets/application.css.sass.erb

第2步添加ERB标记: 更改资产路径以使用erb标记

body
  background: <%= asset_url("/layout/gototop.png") %>

要验证它是否有效,请参阅gototop.png的文件名,它应该类似于gototop-029908d2eb2fd4cb3a2f538c6acbd73d.css

如果没有,那么回复github上的示例应用程序,这样我们就可以帮你调试了。