Heroku не служит фоновым изображением, localhost делает?
У меня проблема с моим приложением rails (Rails 4.0.0.rc2, ruby 2.0.0p195).
Поведение странно: мой локальный хост показывает фоновое изображение правильно, Heroku этого не делает.
В журналах heroku я вижу следующую ошибку:
ActionController::RoutingError (No route matches [GET] "/assets/piano.jpg"):
Я создал фоновое изображение, вставив следующий код в свой файл custom.css.scss:
.full {
background: image-url("piano.jpg") no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
И я запускаю это со следующим кодом, который у меня есть на моей статической странице:
<body class="full">
....
</body>
У меня уже есть драгоценный камень, работающий в производстве:
group :production do
gem 'pg'
gem 'rails_12factor'
end
В production.rb Я установил следующий параметр в true:
config.serve_static_assets = true
Однако изображение не отображается. Можете ли вы мне помочь?
Ответы
Ответ 1
Я сам нашел решение для проблемы:
RAILS_ENV=production bundle exec rake assets:precompile
После запуска этой команды в консоли, изображение было показано правильно.
Раньше я только пытался запустить:
rake assets:precompile
Это само по себе не помогло. Вы должны обратиться к рабочей среде в своей команде.
Надеюсь, это послужит ссылкой для других пользователей.
Ответ 2
Убедитесь, что вы установили их в файле production.rb
config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true
Ответ 3
Мне нужна комбинация других ответов для работы для меня.
Мне нужно было использовать настройки конфигурации продукта @Brock90, а также прекомпилировать активы, о которых говорил Алекс.
Ответ 4
С помощью свойства background
и SASS:
background: image-url("my_image.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
Ответ 5
У вас нет фотографий в подкаталогах в каталоге images/
Если у кого-то все еще есть проблемы с этим. Я искал повсюду решение, и я думал, что все пробовал. Для моего случая у меня были такие случаи, как
background-image: url("containers/filled/Firkin-Keg-5-Gallons_filled.png");
Итак, у меня были папки в изображениях. Это отлично работает для локального хоста, но это не будет работать на герою.
background-image: url("Firkin-Keg-5-Gallons_filled.png");
нет дополнительных подкаталогов.