有没有办法在 CSS 和 Rails Active Storage 中设置背景图片?
Is there a way to set a background image within the CSS with Rails Active Storage?
我知道可以使用 style
属性在 html.erb
中设置背景图片,如下所示:
<div style="background-image: url('<%= rails_blob_url(object.image) %>');">
...
</div>
但是是否可以在 CSS 中调用图像 blob 并将其用作 div 中的 class?当有专用的 CSS 文件时,具有样式属性确实显得杂乱无章。
在 style.css 文件中实现 ActiveStorage URLs 的一种方法是将文件扩展名更改为 style.css.erb 并像这样调用 helper
background-image: url("<%= Rails.application.routes.url_helpers.url_for(object.image) %>")
我用过类似的助手
Rails.application.routes.url_helpers.url_for
因为视图助手将不再可用。
但我认为它只适用于 sprocket 而不是 webpack,因为 ERB 插值仅适用于 Sprockets。 Webpacker 不通过 ERB 传递资产。
注意:我们永远不应该像这样使用 ActiveStorage URL,因为资产编译是在生产部署时完成的,而不是针对每个请求,因此数据会变得陈旧,ActiveStorage 用于 CRUD。
我知道可以使用 style
属性在 html.erb
中设置背景图片,如下所示:
<div style="background-image: url('<%= rails_blob_url(object.image) %>');">
...
</div>
但是是否可以在 CSS 中调用图像 blob 并将其用作 div 中的 class?当有专用的 CSS 文件时,具有样式属性确实显得杂乱无章。
在 style.css 文件中实现 ActiveStorage URLs 的一种方法是将文件扩展名更改为 style.css.erb 并像这样调用 helper
background-image: url("<%= Rails.application.routes.url_helpers.url_for(object.image) %>")
我用过类似的助手
Rails.application.routes.url_helpers.url_for
因为视图助手将不再可用。
但我认为它只适用于 sprocket 而不是 webpack,因为 ERB 插值仅适用于 Sprockets。 Webpacker 不通过 ERB 传递资产。
注意:我们永远不应该像这样使用 ActiveStorage URL,因为资产编译是在生产部署时完成的,而不是针对每个请求,因此数据会变得陈旧,ActiveStorage 用于 CRUD。