使用Rails 3.1时如何在Sass中使用参考图像?
|
我有一个Rails 3.1项目,资产管道运行良好。问题是我需要在Sass中引用图像,但是Rails会计算图像URL。 (这在生产中尤为重要,Rails在生产中将图像的Git哈希值附加到其文件名中以将其添加到胸围缓存中。)
例如,在
app/assets/stylesheets/todos.css.scss
中:
.button.checkable { background-image: url(/assets/tick.png); }
当我部署(或运行rake assets:precompile
)时,文件app/assets/images/tick.png
将移至public/assets/tick-48fe85c0a.png
或类似的文件。这会破坏CSS。这篇文章提出了两个建议:
不要将素材资源管道用于图片-而是将它们放在ѭ5中并直接引用
在您的CSS中使用ERB,并让Rails计算出图像URL。
1号肯定是有可能的,尽管这意味着我不会在图像上缓存被破坏。数字2出局是因为我正在使用Sass,而不是ERB来处理文件。
没有找到相关结果
已邀请:
6 个回复
奥李
实际上,Rails提供了一堆帮助程序来引用资产:
一般来说
asset_type可以是以下之一:图像,字体,视频,音频,javascript,样式表
犀寺扦
目浆搽
岭取
然后您将文件
入
文件。然后
首先通过ERB,该输出通过LESS处理器,然后输出的任何数据都将进入CSS。将ERB放入SCSS可能会有些奇怪,但是,嘿,它可以正常工作并且完成工作而不会产生太多怪异。 因此,您应该能够找到必要的方法,以通过ERB生成消除缓存的图像路径。 我只用一个Less文件尝试过此操作,但它也应与
一起使用。 顺便说一句,您还可以向SASS添加自己的功能: 可从SassScript上下文访问此模块中的方法。例如,你可以写
它将被称为
。 甚至在手册中甚至还有一些关于编写自己的函数的说明。但是,我不确定如何获取Sprockets来加载您的
补丁程序,因此我不能称其为实用的解决方案。拥有比我更强大的Sprocket Fu的人也许可以使这种方法行之有效,而且我称其比ERBified SCSS更优雅。
扇献隙
文件中添加
扩展名即可:
并使用
方法获取带有哈希值的图像的路径:
该文件将由erb处理,然后由sass处理。
傻零凰死授