我想在我的css中获取图像的绝对URL,如下所示:
"#{request.scheme}://#{request.host_with_port}/assets/image.png);"
但我认为无法在css.erb中访问请求属性。任何人都可以告诉我如何在我的CSS中获得请求方案和host_with_port属性?
答案 0 :(得分:1)
您可以通过在应用程序配置中定义asset_host来定义“scheme”(更正确:协议),主机和端口,但此定义将用于所有资产路径。
请参阅有关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
}
答案 1 :(得分:0)
您可以为任何背景图片或其他资源定义带绝对网址的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);
}