Sollen wir image-url
in Rails 4 etwas anderes als andere verwenden? Sie geben unterschiedliche Werte zurück, die keinen Sinn ergeben. Wenn ich logo.png
in /app/assets/images/logo.png
bin und Folgendes tue, bekomme ich Folgendes:
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")
Natürlich funktioniert nichts davon, weil sie zumindest /assets
vorne brauchen .
UPDATE : Eigentlich habe ich gerade bemerkt, wie ich auf Bilder in Rails 4 zugreifen kann. Ich habe ein Bild bei/app/assets/images/logo.png
. Wenn ich jedoch zu einer der folgenden URLs gehe, wird mein Bild immer noch nicht angezeigt:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
UPDATE 2 : Die einzige Möglichkeit, meine aufzurufen,logo.png
besteht darin, sie in das/app/assets/stylesheets
Verzeichnis zu verschieben und dann aufzurufen:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
Datei oder in einer.css.scss
Datei?.css.scss
DateiAntworten:
Ich hatte gerade dieses Problem selbst. 3 Punkte, die hoffentlich helfen werden:
app/assets/images
Verzeichnis ablegen, sollten Sie das Bild direkt ohne Präfix im Pfad aufrufen können. dh.image_url('logo.png')
background-image:
Eigenschaft verwenden, sollte Ihre Codezeile seinbackground-image: image-url('logo.png')
. Dies funktioniert sowohl für weniger als auch für Sass-Stylesheets. Wenn Sie es in der Ansicht inline verwenden, müssen Sie das integrierte verwendenimage_tag
Helfer in Schienen verwenden, um Ihr Bild auszugeben. Wieder kein Präfix<%= image_tag 'logo.png' %>
rake assets:precompile
, um Ihre Assets zu generieren, oderrake assets:precompile RAILS_ENV=production
für die Produktion, andernfalls verfügt Ihre Produktionsumgebung beim Laden der Seite nicht über die Assets mit Fingerabdrücken.Auch für diese Befehle in Punkt 3 müssen Sie ihnen ein Präfix voranstellen,
bundle exec
wenn Sie Bundler ausführen.quelle
Ihre erste Formulierung
image_url('logo.png')
ist richtig. Wenn das Bild gefunden wird, wird der Pfad generiert/assets/logo.png
(plus ein Hash in der Produktion). Wenn Rails das von Ihnen benannte Bild jedoch nicht finden kann, wird darauf zurückgegriffen/images/logo.png
.Die nächste Frage lautet: Warum findet Rails Ihr Bild nicht? Wenn Sie es in app / assets / images / logo.png ablegen, sollten Sie in der Lage sein, darauf zuzugreifen, indem Sie auf gehen
http://localhost:3000/assets/logo.png
.Wenn dies funktioniert, Ihr CSS jedoch nicht aktualisiert wird, müssen Sie möglicherweise den Cache leeren. Löschen Sie
tmp/cache/assets
aus Ihrem Projektverzeichnis und starten Sie den Server neu (Webrick usw.).Wenn dies fehlschlägt, können Sie auch versuchen, nur zu verwenden.
background-image: url(logo.png);
Dadurch sucht Ihr CSS nach Dateien mit demselben relativen Pfad (in diesem Fall / Assets).quelle
Ich habe gerade herausgefunden, dass
asset_url
Sie dieses Problem mit dem Helfer lösen.quelle
undefined local variable or method 'image'
Fehler bekommen.asset_path("<your_path>", type: :image)
Ich hatte ein ähnliches Problem beim Versuch, ein Hintergrundbild mit Inline-CSS hinzuzufügen. Aufgrund der Funktionsweise der Asset-Synchronisierung muss der Bilderordner nicht angegeben werden.
Das hat bei mir funktioniert:
quelle
assets/img.jpg
oder../assets/img.jpg
was offensichtlich in keinem Verzeichnis funktioniert./assets/img.jpg
tut. TYRails 4.0.0 sieht mit Bild definiert aus
image-url
in derselben Verzeichnisstruktur wie Ihre CSS-Datei definiert ist.Zum Beispiel, wenn Ihre CSS in
assets/stylesheets/main.css.scss
,image-url('logo.png')
wirdurl(/assets/logo.png)
.Wenn Sie Ihre CSS-Datei verschieben
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
wird/assets/cpanel/logo.png
.Wenn Sie das Bild direkt im Verzeichnis Assets / Images verwenden möchten, können Sie es verwenden
asset-url('logo.png')
quelle
für Stylesheets: url (asset_path ('image.jpg'))
quelle
url(asset_path('image.jpg')
,url('image.jpg')
undimage-url('image.jpg')
? Ich arbeite mit Rails 5.0.0.1 undurl()
funktioniert einwandfrei in SCSS- Dateien und in html.erb- Dateien, die ich verwende. Daherasset_path()
möchte ich den richtigen Weg kennen. Danke im Voraus.asset_path
Fügen Sie der Bilddatei einen Digest-Anhang hinzu. Es ist eigentlich für die Produktion gedacht. Nach jeder Bereitstellung wird der Digest-Anhang geändert und der Browser des Benutzers lädt eine neue Version der Bilder herunter.