次のように、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);
}