Rails 4 + Less 的图片网址不包括哈希

Posted

技术标签:

【中文标题】Rails 4 + Less 的图片网址不包括哈希【英文标题】:Image urls for Rails 4 + Less not including the hash 【发布时间】:2014-02-21 20:47:40 【问题描述】:

我有一个 Rails 4 应用程序,并且正在使用 less-rails gem。在main.css.less 中,我使用以下方法向站点添加背景图片:

body 
  background-image: image-url("background.jpg");

在本地一切正常,但是当我使用预编译资产推送到我的服务器时,图像 url 没有更新以包含哈希。也就是说,图像现在位于public/assets/background-074c0b767cd8cfb2da93b37ea3596326.jpg,但我的css文件仍然显示url(/assets/background.jpg)

下面的链接看起来很有希望,但推荐的解决方案都没有奏效(其中大多数是特定于sass,尽管我确实尝试了image-urlasset-url 和它们各自的-path)。

How to reference images in CSS within Rails 4

有什么想法吗?

【问题讨论】:

【参考方案1】:

“哈希”被称为asset fingerprinting,是Rails asset pipeline 的标准功能,这意味着如果一切都正确,它应该可以工作:)

我们以前有过这样的经验,你已经完成了 90% 的路

我推荐 2 个修复:


1.在 LESS 中使用 asset_url

body 
  background-image: asset_url("background.jpg");


2。 Precompile your assets

#config/environments/production.rb
config.serve_static_assets = true

#cmd
rake assets:precompile RAILS_ENV=production

这应该使您的资产静态,从而让您的 CSS 加载它们没有问题!

【讨论】:

以上是关于Rails 4 + Less 的图片网址不包括哈希的主要内容,如果未能解决你的问题,请参考以下文章

rails 4.0.0 处理 css.scss 路径,但在预编译时不附加哈希

将访客重定向到新网址,但不包括图片和管理员

将 Rails 参数哈希传递给命名路由的更有效方法

Rails:Jquery 模板不为背景图像创建哈希

Heroku Rails 4 静态背景图片未部署

升级到 Rails 5 时,序列化为哈希的现有数据会产生错误