CSS in Rails Asset Path not processed by ERB in development
我在
1 2 3 4 5 6 7 8 | ... #nestedbg { background-position: left top; background-image: url(<%= asset_path 'siteheader2.png' %>); background-repeat: repeat-x; background-attachment: fixed; } ... |
当我运行
我试着把
有什么想法吗?谢谢。
老实说,我不能解释为什么在你的案例中解释不正确,但我有一个更好的解决方法:跳过erb解释。
您可以这样做:
1 2 | /* styles.css.scss */ background-image:url(image_path("siteheader2.png")); |
如果你没有机会的话,我也建议你看看Sass:它集成在Rails资产管道中,可以让你做一些很酷的事情,比如变量声明、嵌套、混合等等。
我发现我的CSS文件不会被erb处理,除非添加了scss处理。
我把我的
我在轨道3.1.3上。
我使用的是Rails 3.1.1,当我将应用程序切换到使用Rails 3.1.3时,问题就消失了。我切换到3.1.1,看看问题是否回来了。
我猜这是其中一个gem的问题,3.1.3的更新带来了其他gem的更新。
CSS与ERP
资产管道自动评估erb。这意味着,如果将erb扩展添加到CSS资产(例如application.css.erb),那么可以在CSS规则中使用asset_path之类的帮助程序:
1 | .class { background-image: url(<%= asset_path 'image.png' %>) } |
这将写入正在引用的特定资产的路径。在本例中,在资产加载路径之一(如app/assets/images/image.png)中使用图像是有意义的,它将在此处引用。如果此图像已作为指纹文件在public/assets中可用,则会引用该路径。
如果您想使用数据URI(一种直接将图像数据嵌入到CSS文件中的方法),您可以使用资产数据 URI助手。
CSS和SASS:
在使用资产管道时,必须重新编写资产路径,并且sass rails为以下资产类提供-url和-path帮助程序(在sass中断字,在ruby中下划线):图像、字体、视频、音频、javascript和样式表。
1 2 | image-url("rails.png") becomes url(/assets/rails.png) image-path("rails.png") becomes"/assets/rails.png". |
也可以使用更通用的表单,但必须同时指定资产路径和类:
1 2 | asset-url("rails.png", image) becomes url(/assets/rails.png) asset-path("rails.png", image) becomes"/assets/rails.png" |
引用者:Rails Guide资源管线
标题:2.2.1和2.2.2。
SamOliver的建议对我起了作用,只是重命名扩展名并没有更新文件上的时间戳。
奇怪的是,我发现把
奇怪。