Czy powinniśmy używać czegoś innego oprócz image-url
i innych w Rails 4? Zwracają różne wartości, które wydają się nie mieć sensu. Jeśli mam logo.png
się /app/assets/images/logo.png
i wykonaj następujące czynności, to jest to, co mam:
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
Oczywiście żadna z nich nie działa, ponieważ potrzebują przynajmniej /assets
z przodu.
AKTUALIZACJA : Właściwie właśnie zauważyłem, jak uzyskać dostęp do obrazów w Rails 4? Mam zdjęcie pod adresem/app/assets/images/logo.png
. Ale jeśli przejdę pod którykolwiek z poniższych adresów URL, nadal nie widzę swojego obrazu:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
AKTUALIZACJA 2 : Jedyny sposób, w jaki mogę wywołać mój,logo.png
to przeniesienie go do/app/assets/stylesheets
katalogu, a następnie wyciągnięcie:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
pliku czy w.css.scss
pliku?.css.scss
plikuOdpowiedzi:
Po prostu sam miałem ten problem. 3 punkty, które miejmy nadzieję pomogą:
app/assets/images
katalogu, powinieneś być w stanie wywołać obraz bezpośrednio bez prefiksu w ścieżce. to znaczy.image_url('logo.png')
background-image:
właściwości, Twój wiersz kodu powinien byćbackground-image: image-url('logo.png')
. Działa to zarówno w przypadku arkuszy stylów less i sass. Jeśli używasz go w widoku, będziesz musiał użyć wbudowanegoimage_tag
pomocnika w railsach, aby wyświetlić obraz. Po raz kolejny bez przedrostków<%= image_tag 'logo.png' %>
rake assets:precompile
celu wygenerowania zasobów lubrake assets:precompile RAILS_ENV=production
do produkcji, w przeciwnym razie Twoje środowisko produkcyjne nie będzie miało zasobów z odciskami palców podczas ładowania strony.Również dla tych poleceń w punkcie 3 będziesz musiał poprzedzić je prefiksem,
bundle exec
jeśli używasz bundlera.źródło
Twoje pierwsze sformułowanie
image_url('logo.png')
jest poprawne. Jeśli obraz zostanie znaleziony, wygeneruje ścieżkę/assets/logo.png
(plus hash w produkcji). Jeśli jednak Rails nie mogą znaleźć obrazu, który podałeś, wrócą do/images/logo.png
.Następne pytanie brzmi: dlaczego Railsy nie znajdują Twojego obrazu? Jeśli umieścisz go w app / asset / images / logo.png, powinieneś mieć do niego dostęp, przechodząc do
http://localhost:3000/assets/logo.png
.Jeśli to działa, ale CSS się nie aktualizuje, może być konieczne wyczyszczenie pamięci podręcznej. Usuń
tmp/cache/assets
z katalogu projektu i zrestartuj serwer (webrick itp.).Jeśli to się nie powiedzie, możesz również spróbować po prostu użyć
background-image: url(logo.png);
To spowoduje, że twój CSS będzie szukał plików z tą samą ścieżką względną (która w tym przypadku to / asset).źródło
Właśnie się dowiedziałem, że używając
asset_url
pomocnika rozwiązujesz ten problem.źródło
undefined local variable or method 'image'
błąd.asset_path("<your_path>", type: :image)
Miałem podobny problem, próbując dodać obraz tła z wbudowanym css. Nie ma potrzeby określania folderu obrazów ze względu na sposób działania synchronizacji zasobów.
To zadziałało dla mnie:
źródło
assets/img.jpg
lub../assets/img.jpg
co oczywiście nie działa w żadnym katalogu./assets/img.jpg
robi. TYRails 4.0.0 będą wyglądać na obraz zdefiniowany
image-url
w tej samej strukturze katalogów, co plik css.Na przykład, jeśli twój css w
assets/stylesheets/main.css.scss
, stanieimage-url('logo.png')
sięurl(/assets/logo.png)
.Jeśli przeniesiesz plik css do
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
staje się/assets/cpanel/logo.png
.Jeśli chcesz użyć obrazu bezpośrednio w katalogu asset / images, możesz użyć
asset-url('logo.png')
źródło
dla arkuszy stylów: url (asset_path ('image.jpg'))
źródło
url(asset_path('image.jpg')
,url('image.jpg')
iimage-url('image.jpg')
? Pracuję z Railsami 5.0.0.1 iurl()
działa dobrze w plikach SCSS oraz w plikach html.erb , których używam,asset_path()
więc chciałbym wiedzieć, jak to zrobić. Z góry dziękuję.asset_path
dodaj do pliku obrazu załącznik z podsumowaniem. W rzeczywistości jest przeznaczony do produkcji, po każdym wdrożeniu dodatek z podsumowaniem zostanie zmieniony, a przeglądarka użytkownika pobierze nową wersję obrazów.