Umieściłem wszystkie obrazy mojego motywu administratora w folderze zasobów w folderze o nazwie admin. Następnie link do niego jak normalnie tj.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
FYI. Tylko do testowania nie używam jeszcze tagu asset_path, ponieważ nie skompilowałem swoich zasobów.
Do tej pory dobrze, dopóki nie zdecydowałem się zaktualizować obrazu. Wymieniłem niektóre kolory, ale po ponownym załadowaniu nowy stylizowany obraz nie jest wyświetlany. Jeśli oglądam obraz bezpośrednio w przeglądarce, nadal pokazuje stary obraz. Idąc o krok dalej, zniszczyłem folder z obrazami administratora. Ale nic nie zepsuło, wszystkie obrazy są nadal wyświetlane. I tak, wyczyściłem pamięć podręczną i wypróbowałem na wielu przeglądarkach.
Czy zachodzi jakieś buforowanie obrazu? To tylko lokalny rozwój wykorzystujący pow do obsługi stron.
Nawet niszcząc cały folder obrazów, obrazy nadal są obsługiwane.
Czy coś mi brakuje?
źródło
Odpowiedzi:
W 3.1 po prostu pozbywasz się części ścieżki zawierającej obrazy. Tak więc obraz, który żyje w,
/assets/images/example.png
będzie faktycznie dostępny w żądaniu pobierania pod tym adresem URL -/assets/example.png
Ponieważ
assets/images
folder jest generowany wraz z nową aplikacją 3.1, jest to konwencja, której prawdopodobnie chcą, abyś przestrzegał. Myślę, że tamimage_tag
będzie tego szukać, ale jeszcze tego nie testowałem.Pamiętam również, że podczas prezentacji na RailsConf D2h mówił, że
public folder
nie powinno to już mieć wiele, głównie strony błędów i favicon.źródło
Będziesz chciał zmienić rozszerzenie pliku css z
.css.scss
na.css.scss.erb
i wykonaj:Aby zobaczyć zmiany, może być konieczne wykonanie „twardego odświeżania”. CMD + SHIFT + R w przeglądarkach OSX.
Upewnij się, że w produkcji
dzieje się po wdrożeniu.
źródło
.css
do.css.erb
(po przeniesieniu ich do,app/assets
aby uzyskać przetwarzanie erb bez sass.Co warto, kiedy to zrobiłem, stwierdziłem, że żaden folder nie powinien znajdować się w ścieżce w pliku css. Na przykład, jeśli mam
app/assets/images/example.png
i umieszczam to w moim pliku css ...... to jakoś magicznie działa. I zdobione to uruchamiając
rake assets:precompile
zadanie, które właśnie zasysa wszystko z wszystkich ścieżek obciążenia i wysypisk go w folderze śmieci szuflady:public/assets
. To ironiczne, IMO ...W każdym razie oznacza to, że nie musisz umieszczać żadnych ścieżek folderów, wszystko w folderach zasobów będzie mieszkało w jednym ogromnym katalogu. Nie jest jasne, w jaki sposób ten system rozwiązuje konflikty nazw plików, może być konieczne zachowanie ostrożności.
Trochę frustrujące, że nie ma lepszych doktorów, którzy mogliby tak zmienić.
źródło
asset_path()
pomocnika i określając katalog.W rails 4 możesz teraz użyć pomocniczego adresu URL obrazu css i sass:
Jeśli obrazy tła nie są wyświetlane, zastanów się, jak odnosisz się do nich w arkuszach stylów.
źródło
div.logo {background: image-url("logo.png") no-repeat center;}
odwołując się do obrazów w CSS lub w tagu IMG, użyj nazwy-obrazu.jpg
podczas gdy obraz naprawdę znajduje się pod ./assets/images/image-name.jpg
źródło
background: url('sort_asc_disabled.png')
, działa dla pliku app / asset / images / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Ten railscast (film instruktażowy Rails dotyczący potoku zasobów) pomaga również w wyjaśnieniu ścieżek w potoku zasobów. Okazało się, że jest całkiem przydatny i faktycznie obejrzałem go kilka razy.
Rozwiązanie, które wybrałem, to @Lee McAlilly powyżej, ale ten railscast pomógł mi zrozumieć, dlaczego to działa. Mam nadzieję, że to pomoże!
źródło
Potok aktywów w szynach oferuje metodę na to dokładnie.
Po prostu dodajesz image_path ('nazwa pliku obrazu') do swojego pliku css lub scss, a railsy zajmą się wszystkim. Na przykład:
.logo{ background:url(image_path('admin/logo.png'));
(pamiętaj, że działa to tak samo, jak w widoku .erb i nie używasz w ścieżce „/ asset” ani „/ asset / images”)
Railsy oferują również inne metody pomocnicze, a tutaj jest inna odpowiedź: Jak używać obrazów referencyjnych w Sassie podczas korzystania z Railsów 3.1?
źródło