在利用资产管道的 Rails 应用程序中,用于 css 文件中背景图像的正确路径是啥?

Posted

技术标签:

【中文标题】在利用资产管道的 Rails 应用程序中,用于 css 文件中背景图像的正确路径是啥?【英文标题】:What is the correct path to use for a background image in a css file in a Rails application that takes advantage of the asset pipeline?在利用资产管道的 Rails 应用程序中,用于 css 文件中背景图像的正确路径是什么? 【发布时间】:2013-10-28 12:26:12 【问题描述】:

似乎这个问题应该有一个规范的正确答案,但我在 Rails 文档或其他任何地方都找不到它。

在利用资产管道的 Rails 应用程序中,css 文件中的背景图像使用的正确路径是什么?

首先,路径需要在开发和生产中发挥作用。 如果两者的路径不能相同,则差异应该很明显。

我意识到如果您使用 css、scss 或 sass,这个问题的答案可能会有所不同。很高兴知道不同语法之间的区别。我应该使用“asset-url”还是“image-url”?甚至可以在资产管道中使用纯 CSS 吗?

我尝试使用“/assets/”、“/images/”或在图像 url 之前不添加任何内容作为背景图像路径的前缀。没有任何效果。什么会?

【问题讨论】:

【参考方案1】:

两个 PATHS 在 css 中使用都是正确的。

参考 rails 3.2.13。 Sass-Rails 内部使用 asset-url'sasset_path(rails 辅助方法)相同的逻辑。而image-url 调用rails image_path 辅助方法,该方法再次调用asset_path 的rails 辅助方法。因此,这两种方法都只是调用 Rails 助手的asset_path,您可以使用其中任何一种。所以只有语法不同。

P.S.- 欢迎任何反馈或意见。

【讨论】:

但是路径是什么?我试过:背景图像:图像网址(“/assets/images/the-image-i-want.jpg”);但这不起作用。 嘿,只需使用:background-image: image-url('the-image-you-want.jpg'),rails 会自动在资源路径的 images 文件夹中搜索您的图像。 我正在寻找的答案在上面的评论中。【参考方案2】:

您可以将asset-url 用于sass 文件。 对于纯 css 使用 url

【讨论】:

我知道(正如我希望我在问题中指出的那样)像“asset-url”和“image-url”这样的助手只能在 sass 或 scss(编译样式表)中使用。不过,我的问题是正确的使用路径是什么?我可以看到它可能会有所不同,具体取决于您使用的编译或非编译 css 的类型。

以上是关于在利用资产管道的 Rails 应用程序中,用于 css 文件中背景图像的正确路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3:资产管道+许多布局

我可以脱离 Rails 资产管道吗?

带有子域的 Rails 资产管道不检索图像

带引导程序的 Rails 资产管道

Rails 6 的资产管道中不存在资产“application.js”

无法将凉亭组件 css 添加到 Rails 4.2 中的资产管道中