Rails 4.1 image url仍在调用未编译的资产

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

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

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

这是资产指纹识别导致的常见问题(不仅仅是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执行此操作rake assets:precompile RAILS_ENV=production 。 在控制台中触发此命令后,它按预期工作

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

第1步RENAMERAILS_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") %> 

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

如果没有,然后在github上回复示例应用程序,我们可以帮助您调试。