我有一个 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。这篇文章提出了两个建议:
- 不要将资产管道用于图像——而是将它们放入
public/images/
并直接引用它们 - 为你的 CSS 使用 ERB 并让 Rails 计算出图像 URL。
第 1 号当然是一种可能性,尽管这意味着我的图像不会被缓存破坏。第 2 号已经出局,因为我使用的是 Sass,而不是 ERB 来处理文件。