Ресурс Rails 4 или путь к изображению из CSS

моя файловая структура такая

app
  assets
    bookshelf
      assets
        my_image.jpg
    images
      standard_image.png

В моем файле css.scss оба они работают в разработке, но не работают в производстве.

#some_div {
  background: url("standard_image.png")
}


#some_div {
  background: url("assets/my_image.jpg")
}

Я сделал RAILS_ENV=production rake assets:clean assets:precompile. Я удалил свой tmp/cache.

Я чувствую, что это может быть проблема с конфигурацией. Что мне не хватает?

Я знаю, что изображения находятся на сервере. Я получил переваренное имя файла и поместил его в URL-адрес с корневым адресом производства.


Когда я пытаюсь использовать

      background: asset-url("assets/my_image.jpg", image)

я получил

Sprockets::Rails::Helper::AssetFilteredError в /books

Актив отфильтрован и не будет обслуживаться: добавьте Rails.application.config.assets.precompile += %w( assets/bookshelf_skin02_top_bg.jpg ) к config/initializers/assets.rb и перезапустите сервер.

Очевидно, я не хочу добавлять каждый файл ассета в конфиг.


person ahnbizcad    schedule 02.11.2014    source источник


Ответы (3)


Я создал /config/initializers/asset.rb и поместил соответствующие расширения файлов в форму регулярного выражения.

Я считаю, что это работает, потому что это говорит конвейеру ресурсов предварительно скомпилировать все эти типы файлов в lib или vendor, что не выполняется автоматически в rails 4.

# Images
Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/

# Fonts
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
person ahnbizcad    schedule 04.11.2014

Удалить папку ресурсов:

background: image-url('my_image.jpg');

person Magicpulse    schedule 03.11.2014
comment
это будет работать только для файлов в папке изображений, а не в пользовательских папках в пределах vendor/assets или lib/assets - person ahnbizcad; 07.11.2014

Установите true в вашем config/environments/production.rb

config.assets.compile = true
person user3366155    schedule 02.11.2014
comment
Я знаю, что это сработает, но это хорошая идея из-за скорости. Есть еще один способ. - person ahnbizcad; 04.11.2014