Ich habe alle meine Bilder für mein Admin-Thema im Assets-Ordner in einem Ordner namens admin abgelegt. Dann verlinke ich es wie gewohnt dh.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
Zu Ihrer Information. Nur zum Testen verwende ich das Tag "asset_path" noch nicht, da ich meine Assets noch nicht kompiliert habe.
Ok, alles gut, bis ich mich entschied, ein Bild zu aktualisieren. Ich habe einige Farben ersetzt, aber beim erneuten Laden wird das neu gestaltete Bild nicht angezeigt. Wenn ich das Bild direkt im Browser ansehe, wird immer noch das alte Bild angezeigt. Ich ging noch einen Schritt weiter und zerstörte den Ordner mit den Administratorbildern. Aber es hat nichts kaputt gemacht, alle Bilder werden noch angezeigt. Und ja, ich habe meinen Cache geleert und mehrere Browser ausprobiert.
Gibt es eine Art Bild-Caching? Dies ist nur eine lokale Entwicklung mit pow, um die Seiten zu bedienen.
Selbst wenn der gesamte Bilderordner zerstört wird, werden die Bilder weiterhin bereitgestellt.
Vermisse ich etwas
Antworten:
In 3.1 werden Sie nur den Teil "Bilder" des Pfades entfernen. Ein Bild, in dem lebt,
/assets/images/example.png
ist also tatsächlich in einer Get-Anfrage unter dieser URL verfügbar -/assets/example.png
Da der
assets/images
Ordner zusammen mit einer neuen 3.1-App generiert wird, ist dies die Konvention, der Sie wahrscheinlich folgen sollen. Ich denke, dortimage_tag
wird danach gesucht, aber das habe ich noch nicht getestet.Während der RailsConf-Keynote erinnere ich mich, dass D2h sagte, das
public folder
sollte nicht mehr viel enthalten, meistens nur Fehlerseiten und ein Favicon.quelle
Sie wollen die Erweiterung Ihrer CSS - Datei zu ändern , um vom
.css.scss
zu.css.scss.erb
und tun:Möglicherweise müssen Sie eine "harte Aktualisierung" durchführen, um Änderungen zu sehen. CMD + UMSCHALT + R in OSX-Browsern.
Stellen Sie in der Produktion sicher
geschieht bei der Bereitstellung.
quelle
.css
zu.css.erb
(nachdem Sie sie verschoben haben inapp/assets
den erb Verarbeitung ohne sass zu bekommen.Als ich das tat, stellte ich fest, dass kein Ordner im Pfad der CSS-Datei enthalten sein sollte. Zum Beispiel, wenn ich habe
app/assets/images/example.png
, und ich füge dies in meine CSS-Datei ...... dann funktioniert es irgendwie magisch. Ich habe dies herausgefunden, indem ich die
rake assets:precompile
Aufgabe ausgeführt habe, bei der einfach alles aus all Ihren Ladepfaden herausgesaugt und in einem Ordner mit Junk-Schubladen abgelegt wird :public/assets
. Das ist ironisch, IMO ...In jedem Fall bedeutet dies, dass Sie keine Ordnerpfade einfügen müssen. Alles in Ihren Asset-Ordnern befindet sich in einem riesigen Verzeichnis. Wie dieses System Dateinamenkonflikte löst, ist unklar. Möglicherweise müssen Sie dabei vorsichtig sein.
Ein bisschen frustrierend, dass es für diese große Veränderung keine besseren Dokumente gibt.
quelle
asset_path()
Helfer verwendet und das Verzeichnis angegeben wird.In Rails 4 können Sie jetzt eine CSS- und Sass-Helfer-Bild-URL verwenden:
Wenn Ihre Hintergrundbilder nicht angezeigt werden, sollten Sie sich ansehen, wie Sie sie in Ihren Stylesheets referenzieren.
quelle
div.logo {background: image-url("logo.png") no-repeat center;}
Verwenden Sie beim Verweisen auf Bilder in CSS oder in einem IMG-Tag image-name.jpg
während sich das Bild wirklich unter ./assets/images/image-name.jpg befindet
quelle
background: url('sort_asc_disabled.png')
funktioniert für die Datei app / assets / images / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Dieser Railscast (Rails Tutorial-Video zur Asset-Pipeline) hilft auch dabei, die Pfade in der Asset-Pipeline zu erklären. Ich fand es ziemlich nützlich und habe es tatsächlich ein paar Mal gesehen.
Die Lösung, die ich gewählt habe, ist @Lee McAlillys oben, aber dieser Railscast hat mir geholfen zu verstehen, warum es funktioniert. Ich hoffe es hilft!
quelle
Die Asset-Pipeline in Schienen bietet genau dafür eine Methode.
Sie fügen einfach image_path ('image filename') zu Ihrer CSS- oder SCSS-Datei hinzu und Rails kümmert sich um alles. Beispielsweise:
.logo{ background:url(image_path('admin/logo.png'));
(Beachten Sie, dass es genau wie in einer .erb-Ansicht funktioniert und Sie im Pfad nicht "/ Assets" oder "/ Assets / Images" verwenden.)
Rails bietet auch andere Hilfsmethoden an, und hier gibt es eine andere Antwort: Wie verwende ich Referenzbilder in Sass, wenn ich Rails 3.1 verwende?
quelle