与carreirwave的背景图像

时间:2015-10-20 22:37:41

标签: ruby-on-rails carrierwave

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

这是观看代码:

<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

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

根据要求,渲染的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>

1 个答案:

答案 0 :(得分:1)

啊,我知道现在发生了什么。当您使用<%= 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>的图像来执行页面上的脚本。