我想在css中获取图像的绝对url,如下所示:
"#{request.scheme}://#{request.host_with_port}/assets/image.png);"
但是我认为请求属性不能在css.erb中访问。谁能告诉我,我怎么能得到请求方案和host_with_port属性在我的css?
您可以通过在应用程序配置中定义asset_host来定义"scheme"(更正确的是:protocol)、主机和端口,尽管该定义将用于您的所有资产路径。
参考Rails API文档中的资产标签助手请求信息可以使用:
ActionController::Base.asset_host = Proc.new { |source, request|
"#{request.protocol}#{request.host_with_port}"
}
如果您需要不同类型的资产的不同值,您可以定义过滤条件,例如:
ActionController::Base.asset_host = Proc.new { |source|
if source.starts_with?('/images')
"http://images.example.com"
else
"http://assets.example.com"
end
}
您可以为任何背景图像或其他资产定义具有绝对url的css。如何在css文件中使用sass/scss.
获取绝对图像路径CSSbody {
background-image: image-url(background.png);
}
在您的环境文件中使用您的
config.action_controller.asset_host = "http://your.domain.com/"
然后你的css看起来像这样:
body {
background-image: url(http://your.domain.com/assets/background.png);
}