【问题标题】:Rails images and assets not being loaded properlyRails 图像和资产未正确加载
【发布时间】:2013-05-28 11:01:48
【问题描述】:

例如,在我的 Rails 应用程序中,我有类似的内容:

.wax_seal {
  background: url("wax-seal-small.png");
  display: block;
  height: 100px;
  margin: 0 auto;
  width: 92px;
}

.wax_seal:active {
  background: url('wax-seal-small-broken.png');
}

在我的config/environments/production.rb 文件中:

# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = true

我手动调用资产的编译:

bundle exec rake assets:precompile

并且文件是在名称末尾使用哈希创建的:

wax-seal-small-Uuhqwduhqwdoi234983jewf.png

所以这不起作用:

background: url("wax-seal-small.png");

但这很好用(当我手动在 Chrome 中输入时):

background: url("wax-seal-small-Uuhqwduhqwdoi234983jewf.png");

我在这里缺少什么步骤?如何让我的 CSS 规则添加到那个小哈希中?

config/environments/production.rb 中添加config.assets.compile = true 使其工作,但我在Rails 指南中读到,由于显着的性能损失,这是一种不好的做法。

【问题讨论】:

  • 我遇到了同样的问题,我已经尝试了 2 个答案中的两个建议(到目前为止),但没有成功。你能分享你的整个production.rb 文件以便我与我的比较吗?谢谢。

标签: css ruby-on-rails asset-pipeline assets ruby-on-rails-4


【解决方案1】:

我在 edgerails 文档中找到了这个:http://edgeguides.rubyonrails.org/asset_pipeline.html#css-and-sass

2.3.2 CSS 和 Sass

使用资产管道时,必须重写资产路径,并且 sass-rails 为以下资产类别提供 -url 和 -path 帮助器(在 Sass 中为连字符,在 Ruby 中为下划线):图像、字体、视频、音频、JavaScript 和样式表。

  • image-url("rails.png") becomes url(/assets/rails.png)
  • image-path("rails.png") becomes "/assets/rails.png"

也可以使用更通用的形式,但必须同时指定资产路径和类:

  • asset-url("rails.png", image) becomes url(/assets/rails.png)
  • asset-path("rails.png", image) becomes "/assets/rails.png"

【讨论】:

  • 这似乎不是一个答案?问题似乎是“为什么指纹识别不起作用”。
【解决方案2】:

如果你使用 sass 或更少,你可以使用 background: image-url("wax-seal-small.png");

这将添加到您的文件的路径并附加缓存破坏器哈希。

否则只需将其引用到 /assets 目录。例如。 background: url("/assets/wax-seal-small.png");

【讨论】:

  • 我使用默认的.scss 文件。这是犹太铁路的做法吗?使用image-url 而不是url?在哪里可以找到image-url 的官方文档?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多