Фоновые изображения не отображаются в приложении Ruby on Rails

Я пытаюсь сделать изображение на заднем плане div с классом head,

мой application представление написано Haml и тело определяется следующим образом:

%body
    .container
        .head
            .sixteen_columns
            .top-nav

Включено в мой application таблица стилей:

.head {
    background-image: url(/images/background_image.jpg); 
    width: 100%; 
    height: auto;
}

Я попытался несколько вариантов, чтобы указать путь к изображению и изменил имя изображения несколько раз, но безрезультатно.

В чем проблема?

5 ответов

В rails 4 теперь вы можете использовать css и sass helper image-url:

div.logo {background-image: image-url("logo.png");}

Если ваши фоновые изображения не отображаются, подумайте о том, как вы ссылаетесь на них в ваших CSS-файлах.

Рассмотрите возможность использования asset_path помощник при ссылках на изображения в вашей таблице стилей. Документация может быть найдена здесь (см. 2.2.1). В контексте CSS, который вы перечислили, вы бы подняли

.head {
  background-image:url(<%= asset_path 'background_image.jpg'%>); 
  width:100%; 
  height:auto;
}

Примечание: для этого требуется, чтобы ваша таблица стилей была erb.

Это дает ряд преимуществ по сравнению с явным указанием пути, одно из которых заключается в том, что по мере изменения структуры приложения rails в новых выпусках версий вам не нужно будет ничего менять в коде для правильной ссылки на это изображение.

Это может показаться излишним просто ссылаться на изображение, но это одно из многих соглашений Rails, к которым сложно привыкнуть, но это здорово! по мере роста и изменения вашего приложения, мы надеемся, что оно позволит ему лучше выдержать испытание временем.

Решение:

Оказалось, что это сочетание двух вещей. Я использовал этот формат для фонового изображения:

background-image: url(../images/background_image.jpg);

Тем не менее .head div рендеринг с height из 0, Я добавил фиксированную высоту для тестирования, и все это проявилось идеально. Я могу работать с этим отсюда.

Спасибо всем большое за помощь!!

Предполагая, что вы используете Rails 3.1 или более позднюю версию и что вы правильно используете конвейер ресурсов для своих изображений, вы можете включить свой файл изображения, выполнив следующие действия:

.head {
    background-image: url(/assets/background_image.jpg); 
    width: 100%; 
    height: auto;
}

Причина этого в том, как работает конвейер активов. Он компилирует ваши активы во время выполнения и помещает все ваши активы в папку с именем /assets/, Он также игнорирует структурирование подпапок и просто сбрасывает все в корень /assets/ папка, а не /assets/subfolder/,

Попробуйте запустить

rails -v

из консоли, чтобы подтвердить, на какой версии Rails вы находитесь.

Похоже, вы используете приложение rails 2.x, верно? Это должно означать, что вы предоставляете изображения, js и т. Д. Из каталога / public. Одна важная ошибка, которая спровоцировала меня при настройке фоновых изображений в css, заключается в том, что указанные вами пути относятся к каталогу, в котором находится таблица стилей (например, /public/stylesheets), а не к корневому каталогу самого проекта.

Вы пытались изменить путь, чтобы перейти на один каталог от того, где находится таблица стилей?

.head {
    background-image: url(../images/background_image.jpg); 
    width: 100%; 
    height: auto;
}

РЕДАКТИРОВАТЬ: Какие еще пути к изображению bg вы пробовали?

Некоторые другие возможности могут быть:

  background-image: url(images/background_image.jpg); 
  background-image: url('../images/background_image.jpg'); 

Еще одна вещь, которую нужно проверить, - это загрузить представление и изучить div в Google Chrome с помощью инспектора (Ctrl Shift + I). Выберите div и изучите стили, которые ему назначает Chrome.

Кроме того, дважды проверьте, что он все еще называется background_image.jpg Не могу сказать вам, сколько раз я обгорел из-за опечатки, которую я пропустил;)

Другие вопросы по тегам