ActionController::RoutingError (No route matches [GET] “/assets/logo.png”)…

Opublikowano: 06.12.2011 | Kategoria: Programowanie | Tagi: , | Brak komentarzy »

Ruby on Rails 3.1 z Assets Pipeline i SASS – dla mnie super sprawa. Niestety po update Rails do wersji 3.1.3 i jednoczesnej przesiadce na Ruby 1.9.3 natrafiłem na niespodziewany błąd (ostatecznie, to nie zmiana ich wersji była przyczyną, o czym dalej).

W plikach styli z rozszerzeniem .css.scss używałem linków to obrazków zgodnie z metodą proponowaną przez gem sass-rails: image-url('logo.png') (plik znajdował się oczywiście w odpowiednim katalogu railsapp/app/assets/images/logo.png). Grafika deklarowana w stylach przestała się pojawiać na developmencie, więc na szybko zmieniłem sass-owe image-url na css-owe url. Po wgraniu aplikacji na produkcję i wykonaniu bundle exec rake assets:precompile niestety zamiast obrazków zaczął pojawiać się w logach błąd: ActionController::RoutingError (No route matches [GET] “/assets/logo.png”).

Po kilkunastu próbach znalezienia rozwiązania, winnym okazał się gem Compass, który powodował konflikt z sass-owym image-url zmieniający /assets/logo.png (prawidłowy url) na /images/logo.png (nieprawidłowy).

Pomógł update compass do najnowszej wersji z GitHub i powrót do sass-railsowej składni.



Skomentuj

Aby uatrakcyjnić czy też wzbogadzić swój komentarz o linki lub typografię, możesz wykorzystać następujące tagi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>