我有一个 Rails 3.1 元素, Assets 管道运行良好。问题是我需要在我的 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。 This post提出两个建议:
- 不要对图像使用 Assets 管道——而是将它们放在
public/images/
中并直接引用它们 - 将 ERB 用于您的 CSS,并让 Rails 计算出图像 URL。
第 1 种肯定是有可能的,尽管这意味着我的图像不会出现缓存破坏。第 2 条已出局,因为我使用 Sass 而不是 ERB 来处理文件。
最佳答案
以下应该可以解决问题:
.button.checkable { background-image: url(image_path('tick.png')); }
Rails 实际上提供了一堆助手来引用 Assets :
image-url('asset_name')
audio-path('asset_name')
总的来说
[asset_type]-url('asset_name') #Becomes url('assets/asset_name')
[asset_type]-path('asset_name') #Becomes 'assets/asset_name'
asset_type 可以是以下之一:图像、字体、视频、音频、javascript、样式表
关于ruby-on-rails - 使用 Rails 3.1 时如何在 Sass 中使用引用图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393315/