2013-05-12 3 views
10

Ich habe eine App von 3.2.12 auf 4.0.0.rc1 umgestellt. Als ich es danach in der Produktion gesehen habe, war das Hintergrundbild verschwunden. Der Rest meiner Image-Assets wurde ohne Probleme abgerufen.Wie kann ich CSS-Hintergrundbilder in der Produktion in Rails 4.0 referenzieren?

In meinem Logs, sah ich, dass alle erfolgreich gerenderte Bilder einen Digest hatten am Ende von ihnen heftete, etwa so:

2013-05-12T19:57:05.856277+00:00 heroku[router]: at=info method=GET path=/asset/explore-9ec2a1cfd4784133755637f6ef6d5673.png host=xxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=3ms service=5ms status=200 bytes=4064 

Und mein erfolgloses Hintergrundbild nicht auf mich hatte zu verdauen, sowie ein 404 Antwortcode:

2013-05-12T19:57:05.736354+00:00 heroku[router]: at=info method=GET path=/assets/background.png host=xxxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=2ms service=7ms status=404 bytes=728 

In der production.rb Datei gibt es eine Config-Zeile, die diese für das Caching ermöglicht:

# Generate digests for assets URLs 
config.assets.digest = true 
Diese

ist die CSS für den Hintergrund:

body { 
    background-image: url('background.png'); 
    background-attachment: fixed; 
    background-position: 100% 100%; 
    background-repeat: no-repeat; 
} 

ich festgestellt, dass meine CSS-Datei wurde versucht, eine Bild-URL zu holen, die nicht existierten, weil es Verweis auf die Ebene Vermögenswert („background.png“) ohne den Hash am Ende. Dies ist nur ein Problem für Bilder im CSS. Alle Bilder, auf die in meinen ERB-Dateien verwiesen wird, sind in Ordnung. Wie referenziere ich dieses Asset in meinem CSS, ohne den Digest zu kodieren? Gibt es Workarounds?

Danke fürs Lesen.

Antwort

21

Verwenden Sie asset-url. Rails wird das vorverarbeiten und die richtige URL erweitern.

body { 
    background-image: asset-url('background.png'); 
    background-attachment: fixed; 
    background-position: 100% 100%; 
    background-repeat: no-repeat; 
} 
+0

Ich wusste nicht darüber! Vielen Dank. Der Hintergrund wird erneut angezeigt. – hlh

+2

Ich habe dieses genaue Problem, aber wenn ich meine Zeile ändern, um 'Asset-URL 'zu verwenden, bekomme ich' Ungültiger Eigenschaftswert '. Irgendeine Idee warum? –

+1

'Asset-URL' nimmt ein zweites Argument' $ Asset-Klasse'. Betrachte zum Beispiel 'asset-url ('whatever.png', image)'. Du kannst es auch mit 'image-url' schreiben:' image-url ('whatever') ', – fny

Verwandte Themen