我想在我的 css 中获取图像的绝对 url,如下所示:
"#{request.scheme}://#{request.host_with_port}/assets/image.png);"
但我认为在css.erb中无法访问请求属性。谁能告诉我如何在我的 css 中获取请求方案和 host_with_port 属性?
我想在我的 css 中获取图像的绝对 url,如下所示:
"#{request.scheme}://#{request.host_with_port}/assets/image.png);"
但我认为在css.erb中无法访问请求属性。谁能告诉我如何在我的 css 中获取请求方案和 host_with_port 属性?
您可以通过在应用程序配置中定义asset_host 来定义“方案”(更正确:协议)、主机和端口,尽管此定义将用于您的所有资产路径。
参考关于Asset Tag Helpers请求信息的 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。因此,您可以按照How to get absolute image paths in your css files using sass/scss动态生成它。
CSS
body {
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);
}