Обновление до Ruby on Rails 3.1: как решить проблемы с загрузкой изображений в файлах CSS? - PullRequest
1 голос
/ 21 сентября 2011

Я использую Ruby on Rails 3.0.10 и обновляю свой RoR до версии 3.1.0. Я слежу за Обновлением до Rails 3.1 railscast и в это время 07: 04 он начинает говорить о проблемах при загрузке файлов изображений ...

В двух словах:

[...] Это (то есть загрузка изображений - дополнительная информация здесь ) не будет работать, поскольку изображения нашего приложения больше не находятся в каталоге / public / images. Самым простым решением может оказаться изменение URL-адреса изображения с /images/railscasts_logo.png на /assets/railscasts_logo.png, и хотя это будет работать в режиме разработки, мы столкнемся с проблемами в работе. [...] Вместо этого мы должны всегда использовать вспомогательные методы. Это позволит правильно связать изображение как в режиме разработки, так и в режиме производства. [...]

Моя проблема в моих файлах CSS , где у меня есть такие утверждения, как следующие

.a_class {
    ...
    background-image: url("/images/avatar.png");
    ...
}

что, как и должно быть, некорректно загружаются файлы изображений.

Как я могу решить эту проблему в Rails 3.1?

1 Ответ

4 голосов
/ 21 сентября 2011

Возможно, вы заглянули в рельсовые направляющие, особенно в часть на конвейере активов (http://guides.rubyonrails.org/asset_pipeline.html).

В разделе 2.2.2 CSS и SASS вы найдете следующее объяснение:

При использовании конвейера ресурсов пути к ресурсам должны быть переписаны, а sass-rails предоставляет помощники _url и _path для следующих классов ресурсов: изображения, шрифта, видео, аудио, javascript, таблицы стилей.

image-url("rails.png") becomes url(/assets/rails.png)
image-path("rails.png") becomes "/assets/rails.png".

Можно также использовать более общую форму, но необходимо указать путь к активу и класс:

asset-url("rails.png", image) becomes url(/assets/rails.png)
asset-path("rails.png", image) becomes "/assets/rails.png"

Существует также альтернативный способ, добавив расширение .erb вместо стандартного .sass, которое описано в разделе 2.2.1. Но я все равно предпочитаю дерзкий путь.

Edit:

Вы также можете проверить этот пост здесь на stackoverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...