Was tun, wenn das Image fest in der lokalen Umgebung angezeigt wird, das Image jedoch verschwindet, wenn es in der Produktionsumgebung bereitgestellt wird?
・ Schienen 6.0.3. ・ Haml
Ich habe die Rails-Hilfsmethode image_tag
verwendet, um den Pfad des Bildes wie unten gezeigt anzugeben, und es wurde in der lokalen Umgebung gut angezeigt.
= image_tag "assets/material/icon/icon.png "
Als ich es bereitstellte, verschwand das Image jedoch. (Obwohl diese Notation auch verdächtig ist)
Natürlich wurde auch das in der Datei "scss" beschriebene "Hintergrundbild" nicht aufgelistet (diese Entsprechung wird unten beschrieben).
In einer Produktionsumgebung werden auch die Bilder kompiliert, die Namen der Bilddateien werden geändert und die Verzeichnisse werden geändert!
Der Unterschied zwischen der Produktionsumgebung und der lokalen Umgebung ist Der Pfad ändert sich (app / assets / images / icon.png => /assets/icon.png) Der Name ändert sich (icon.png => icon-xxx… .png) * xxx… ist Digest Das wird sich ändern!
Verwenden Sie die Option "Rails" mit dem Namen "resources_path ()". Dies ist praktisch und kann in der Produktionsumgebung bereitgestellt werden, und selbst wenn sich der Dateiname oder das Verzeichnis ändert, kann es lokal oder in der Produktion mit diesem behandelt werden!
Ändern Sie dies insbesondere wie folgt
= image_tag asset_path("assets/material/icon/icon.png ")
Ich denke das wird funktionieren ... Es wird auch in der lokalen Umgebung nicht mehr angezeigt. .. .. ..
Das Ergebnis ist das gleiche, auch wenn Sie (natürlich) mit einer schlechten Quelle bereitstellen.
Die Option "Asset_Pfad" entspricht den Dateien direkt unter "App / Assets / Images", entspricht aber anscheinend nicht den Dateien im Verzeichnis dahinter.
Alle im Verzeichnis verwalteten Bilder wurden direkt unter "app / assets / images" verschoben, und die Notation wurde wie folgt korrigiert.
= image_tag asset_path("icon.png ")
Wenn ich es jetzt bereitstelle, wird das Bild endlich angezeigt! !!
Zusammenfassend bestand die Lösung darin, die Option "asset_path" zu verwenden und die Bilddatei direkt unter "images" zu platzieren.
Auch hier hat es nicht funktioniert, den Bilddateipfad wie unten gezeigt anzugeben.
background-image: url("main-image.jpg ");
Sie können "image-url" verwenden, um sowohl lokale als auch Produktionsumgebungen zu unterstützen.
background-image:image-url("main-image.jpg ");
Sie können damit umgehen, indem Sie es so schreiben. Geben Sie das Bild natürlich direkt unter "App / Assets / Images" an
Hierbei ist zu beachten, dass nach dem : (Doppelpunkt)
kein Leerzeichen steht. Die Beschreibung von SCSS machte süchtig, da sie mit einem Leerzeichen halber Breite nach dem Doppelpunkt geschrieben wurde.
Ich konnte die Ursache also nicht finden, ohne zu wissen, dass sie falsch war.
Wenn ich es jetzt bereitstelle, wird das Image normal angezeigt! !!
Recommended Posts