【发布时间】:2012-06-17 21:57:54
【问题描述】:
在section 2.2.2, "CSS and Sass" 中,有人告诉我将image-url('delete.png') 放入我的sass 中。所以我有。
但是,它生成的 CSS 像
background-image: url(/images/delete.png)
而不是我在任何地方都被告知它应该生成的东西,正确和明显的东西,
background-image: url(/assets/delete.png)
什么。见鬼。
我花了几天的时间试图弄清楚这是从哪里来的。
这是导致此行为的a gist of relevant settings。这是a gist of the same files in an earlier version of our code base(就在我们实施资产管道之后,它实际上工作了大约一周,然后才出现这种令人沮丧的行为)。你能发现差异吗?您能想到的任何其他文件可能会导致此问题吗?
注意
- 我们故意使用旧版本的
sass-rails,因为新版本在预编译时会导致Stack level too deep!错误。 - 我们正在使用 Compass。
解决方法的两次骇人听闻的尝试
因为实际上对资产管道进行故障排除有点糟糕。
1:将图片放入/images
我试图将所有图像移动到public/images 并将其添加为加载路径。这在开发中有效(图像可在/assets 或/images 访问),但生产的预编译将指纹图像仅放入/assets(obvs),因此当sass-rails 放入url(/imagse/delete-120398471029384102364.png) 时,它可以'找不到。
2:将 /public/images 设为 /public/assets 的符号链接
这可能会在生产中工作,但在开发中 /assets 文件夹不存在,因此 url(/images/delete.png) 指令会导致找不到图像。
【问题讨论】:
-
您是否尝试过以下方法:
asset_path 'delete.png'? -
应该是
asset-url('delete.png', image)。是的,我试过了。正如人们所希望的那样,image-url('delete.png')只是它的简写。它们具有完全相同的行为。 -
使用 .sass.erb 文件并使用 怎么样?虽然它仍然是解决方法,但可能值得尝试诊断 sass-rails 是否有故障。
标签: ruby-on-rails sass asset-pipeline compass-sass