所以我的导轨网站大部分都在生产,但我意识到我错过了一些图像。我查看了我的预编译css文件,图片网址直接调用了像url(/assets/gototop.png)
这样的图片,因为我的图像现在像gototop-6c119f88349ddd550e3efcf5bbefe1ad.png
,所以它找不到。
如何让我的CSS指向预编译的图像文件?
更新:同样如链接文件中所述,我意识到我可以使用asset_path方法但不幸的是我使用的是scss,我不能只将.erb添加到文件的末尾...似乎rails不喜欢使用多个编译器。 (我试过了)
答案 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.sass
至RAILS_ROOT/app/assets/stylesheets/application.css.sass.erb
第2步添加ERB标记: 更改资产路径以使用erb标记
body
background: <%= asset_url("/layout/gototop.png") %>
要验证它是否有效,请参阅gototop.png
的文件名,它应该类似于gototop-029908d2eb2fd4cb3a2f538c6acbd73d.css
。
如果没有,那么回复github上的示例应用程序,这样我们就可以帮你调试了。