【发布时间】:2014-11-29 21:38:37
【问题描述】:
我注意到帮助程序 image_url 和 image-url 在我的 scss 文件中都有效,但它们生成的路径不同。这两个函数有什么区别?
虽然我检查了asset.prefix 路径的环境配置,但它们在渲染资产时会生成不同的前缀。
【问题讨论】:
-
这个stackoverflow question可以回答你
标签: ruby-on-rails sass assets
我注意到帮助程序 image_url 和 image-url 在我的 scss 文件中都有效,但它们生成的路径不同。这两个函数有什么区别?
虽然我检查了asset.prefix 路径的环境配置,但它们在渲染资产时会生成不同的前缀。
【问题讨论】:
标签: ruby-on-rails sass assets
它是同一个助手。来自documentation
使用资产管道时,必须重写资产路径,并且 sass-rails 提供 -url 和 -path 帮助程序(在 Sass 中连字符,在 Ruby 中加下划线 ) 用于以下资产类别:图像、字体、视频、音频、JavaScript 和样式表。
-url 用于 sass,_url 用于 Ruby。
在 css 和 sass 中,函数使用连字符分隔的词是惯例;而在 Ruby 中,使用 snakecase 是惯例。
这两个函数应该具有相同的行为,因此会生成指向相同资产目录的路径。如果没有,那么您可能遇到了类似于以下内容的错误:sass-rails asset pipeline: generating image paths incorrectly; `url(/images/blah.png)` instead of `url(/assets/blah.png)`
【讨论】:
这是主要区别
对于被称为asset_url 或url_to_asset 方法的图像url 使用type image,所以它将转到图像目录
url_to_asset(source, {type: :image}.merge!(options))
对于资产 url,您可以调用 js 或任何其他资产(视频、音频、样式表..)
path_to_asset(source, options.merge(:protocol => :request))
【讨论】: