2015-10-20 5 views
0

У меня возникли проблемы с получением изображений, которые я загружаю с помощью несущей, чтобы показать в блоге, над которым я работаю.фоновые изображения с 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 

И я не сделал каких-либо изменений карапуз он родовое carrierwave генерируется загрузчиком, хотя я могу отправить, что тоже, если это полезно. У кого-нибудь есть идеи?

В соответствии с просьбой, обработанную 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> 
+0

Можете ли вы опубликовать полученный HTML-вывод со своей страницы для всего: от '

...' to the closing '
'? –

+0

Просто разместил его выше. Я не очень хорошо знаком с тем, что должно быть здесь, особенно для фоновых изображений. Похоже, что получить имя изображения по крайней мере и id блога. – Jeastburn

ответ

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>, для выполнения сценариев на вашей странице.

+1

Вы забивали за 10 минут то, что я пытался выяснить весь день! Благодаря! Да, мне нужно пройти и сделать некоторую санитацию. К счастью, существует очень ограничительная система разрешений, которая позволяет администраторам создавать новый контент. – Jeastburn