带有 carreirwave 的背景图像

background images with carreirwave

我无法获取我正在使用载波上传的图像以显示在我正在处理的博客中。

查看代码如下:

<div class="entry-header">
   <div class="entry-image" style="background: image-url(<%= image_tag @blog.image_url.to_s %>)"> </div>
   <h1 class="entry-title"><%= @blog.title %></h1>
</div>

目前 )"> 在图像和标题应该显示的位置显示。我可以通过删除图片标签中的 = 来使它消失,但这也不能解决问题。

这是博客模型:

class Blog < ActiveRecord::Base
validates :title, presence: true, length: { minimum: 5 }
validates :body, presence: true
mount_uploader :image, BlogImageUploader
end

我还没有对通用载波生成的上传器进行任何更改,但如果有帮助,我也可以 post 进行更改。有人有什么想法吗?

根据要求,呈现 html:

<div class="entry-header">
    <div class="entry-image" style="background: <img src=" uploads="" blog="" image="" 980190964="" gcentral.jpg"="" alt="Gcentral">"&gt; </div>
    <h1 class="entry-title">Grand central test</h1>
</div>

啊,我明白了。当您使用 <%= image_tag(...) %> 时,Rails 会生成一个 <img src="..." alt="..." foo="..." bar="..." /> 标记,用于在页面中显示常规图像。你想要的只是输出图像 URL 而不是

style="background: url(<%= @blog.image_url %>)"

这将打印出您想要的类似 url(http://foo/bar/baz.jpg) 的内容。请注意,我还将 image-url 更改为 url,因为 image-url 是您可以在 /app/assets/stylesheets 文件下使用的东西,但在样式属性中不可用。如果您好奇,请查找 sprockets 了解更多信息。

您可能还想在其中进行一些清理,因为狡猾的黑客可以上传名称类似于 "><script>alert('hacked!')</script> 的图像以在您的页面上执行脚本。