Я поместил все мои изображения для моей темы администратора в папку ресурсов в папке с именем admin. Тогда я ссылаюсь на него, как обычно, т.е.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
FYI. Просто для тестирования я пока не использую тег asset_path, так как я не скомпилировал мои ресурсы.
Хорошо, пока все хорошо, пока я не решил обновить изображение. Я заменил некоторые цвета, но при перезагрузке новое стилизованное изображение не отображается. Если я смотрю изображение прямо в браузере, оно все еще показывает старое изображение. Пройдя еще один шаг, я уничтожил папку с изображениями администратора. Но это ничего не сломало, все изображения все еще отображаются. И да, я очистил свой кеш и пробовал на нескольких браузерах.
Есть ли какое-то кэширование изображений? Это просто локальная разработка, использующая Pow для обслуживания страниц.
Даже уничтожая всю папку изображений, изображения все еще обслуживаются.
Я что-то упускаю?
источник
Ответы:
В версии 3.1 вы просто избавляетесь от части «образов» пути. Таким образом, изображение, которое живет в
/assets/images/example.png
действительности, будет доступно в запросе get по этому URL -/assets/example.png
Поскольку
assets/images
папка создается вместе с новым приложением 3.1, это соглашение, которое они, вероятно, хотят, чтобы вы следовали. Я думаю, что это то, чтоimage_tag
будет искать, но я еще не проверял это.Кроме того, во время выступления на RailsConf я помню, как D2h говорил, что
public folder
в нем больше не должно быть ничего, в основном только страницы ошибок и значок.источник
Вы захотите изменить расширение вашего CSS-файла с
.css.scss
на.css.scss.erb
и сделать:Возможно, вам придется выполнить «жесткое обновление», чтобы увидеть изменения. CMD + SHIFT + R в браузерах OSX.
В производстве убедитесь, что
происходит при развертывании.
источник
.css
в.css.erb
(после того, как вы переместили их,app/assets
чтобы получить erb-обработку без sass.Для чего это стоит, когда я сделал это, я обнаружил, что ни одна папка не должна быть включена в путь в файле CSS. Например, если у меня есть
app/assets/images/example.png
, и я положил это в моем файле CSS ...... тогда каким-то образом это волшебно работает. Я понял это, запустив
rake assets:precompile
задачу, которая просто высасывает все из всех ваших путей загрузки и помещает ее в папку ящика нежелательной почты:public/assets
. Это иронично, ИМО ...В любом случае это означает, что вам не нужно указывать какие-либо пути к папкам, все в ваших папках ресурсов будет в конечном итоге находиться в одном огромном каталоге. Как эта система разрешает конфликты имен файлов, неясно, возможно, вам следует быть осторожным с этим.
Вид разочарования, нет лучших документов для такого большого изменения.
источник
asset_path()
помощник и указав каталог.В rails 4 теперь можно использовать URL-адрес помощника css и sass:
Если фоновые изображения не отображаются, подумайте о том, как вы ссылаетесь на них в таблицах стилей.
источник
div.logo {background: image-url("logo.png") no-repeat center;}
при ссылках на изображения в CSS или в теге IMG используйте image-name.jpg
в то время как изображение действительно находится в ./assets/images/image-name.jpg
источник
background: url('sort_asc_disabled.png')
его использую, работает для файла app / assets / images / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Этот Railscast (Rails Tutorial видео по конвейеру активов) также очень помогает объяснить пути в конвейере активов. Я нашел это довольно полезным, и фактически смотрел это несколько раз.
Решение, которое я выбрал, это @Lee McAlilly выше, но этот Railscast помог мне понять, почему это работает. Надеюсь, поможет!
источник
Трубопровод активов в рельсах предлагает метод для этой точной вещи.
Вы просто добавляете image_path ('имя файла изображения') в свой файл css или scss, и rails позаботится обо всем. Например:
.logo{ background:url(image_path('admin/logo.png'));
(обратите внимание, что он работает так же, как в представлении .erb, и вы не используете "/ assets" или "/ assets / images" в пути)
Rails также предлагает другие вспомогательные методы, и здесь есть другой ответ: как использовать опорные изображения в Sass при использовании Rails 3.1?
источник