2

我想在我的 css 中获取图像的绝对 url,如下所示:

"#{request.scheme}://#{request.host_with_port}/assets/image.png);"

但我认为在css.erb中无法访问请求属性。谁能告诉我如何在我的 css 中获取请求方案和 host_with_port 属性?

4

2 回答 2

1

您可以通过在应用程序配置中定义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
}
于 2013-01-06T00:00:39.937 回答
0

您可以为任何背景图像或其他资产定义带有绝对 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);
}
于 2014-01-14T10:41:48.087 回答