Ruby on rails 动态分配背景图像SCS/sass

Ruby on rails 动态分配背景图像SCS/sass,ruby-on-rails,ruby,sass,Ruby On Rails,Ruby,Sass,我想做的是有一个表单,你可以上传一张图片,然后当你查看这个对象时,图片在一个特定的分区中居中、垂直和水平向上倾斜。它的大小未知,等等 除非有办法使用image_tag helper将其垂直居中,否则我希望能够将该图像用作背景图像。在我的.css.scss文件中,我希望能够执行以下操作 .image_div { background-image: image_url("#{@object.image}"); background-position: center } 我使用C

我想做的是有一个表单,你可以上传一张图片,然后当你查看这个对象时,图片在一个特定的分区中居中、垂直和水平向上倾斜。它的大小未知,等等

除非有办法使用image_tag helper将其垂直居中,否则我希望能够将该图像用作背景图像。在我的.css.scss文件中,我希望能够执行以下操作

.image_div {
     background-image: image_url("#{@object.image}");
     background-position: center
}
我使用CarrierWave上传图片,当我输出@object.image时,它会给出我计算机上的图片路径(因此我不知道在生产中是否会将其视为路径或url)。有什么想法吗?

在sass文件中使用erb是可能的,但这是一个非常非常糟糕的想法,因为您的css必须在每次请求时进行解析(浏览器将无法缓存它)

我建议将css的一个片段直接粘贴在样式标记的视图页面上。这样就可以使用页面对其进行评估。有道理吗


更新(添加请求的示例)

将此添加到实际视图(例如show.html.erb):


.image_div{背景图像:url();}

您可以在css文件中保留
背景位置
声明,因为它不是动态的
@object.image
需要返回图像的实际路径,因此如果
@object.image
是ruby对象,则需要访问存储路径的任何属性(
@object.image.path
@object.image.url
或适合您的代码库的任何属性).

有关元素的内联样式也有意义。我找到了一个可行的解决方案-因为我知道我想要的大小,所以我使用Minimagik和carrierwave来调整图片大小,使用gravity=>center。虽然你的两个选择听起来都不错,但我无法让它们中的任何一个发挥作用。也许是一个例子?@Cade我让你的工作-它不适用于:image url('erb image_url'),但它适用于标准css url('erb image_url')@cimmanon每当我在父div上将显示设置为内联时,我无法降低高度,每当我在父div上将显示设置为表单元格时,宽度是1px,我不能改变。有没有关于我做错了什么的想法?我有一部分真的不喜欢这个答案,因为它混合了样式和标记。我觉得应该有一个更合适的方法。。。
<style media="screen">
  .image_div { background-image: url(<%= @object.image %>); }
</style>