[RUBY] [Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird

Einführung

Was tun, wenn das Image fest in der lokalen Umgebung angezeigt wird, das Image jedoch verschwindet, wenn es in der Produktionsumgebung bereitgestellt wird?

Umgebung

・ Schienen 6.0.3. ・ Haml

Status

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).

Ursache

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!

Gegenmaßnahmen

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.

Warum Asset_Pfad nicht funktioniert

Die Option "Asset_Pfad" entspricht den Dateien direkt unter "App / Assets / Images", entspricht aber anscheinend nicht den Dateien im Verzeichnis dahinter.

Korrespondenz

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.

[scss] Über das Hintergrundbild

Auch hier hat es nicht funktioniert, den Bilddateipfad wie unten gezeigt anzugeben.


background-image: url("main-image.jpg ");

Korrespondenz

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

[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
Das Bild wird in der Produktionsumgebung nicht angezeigt
Informationen zum Problem, dass das Image nach der AWS-Bereitstellung nicht angezeigt wird
[Rails] Setzen Sie die Datenbank in der Produktionsumgebung zurück
Die Gerätefehlermeldung wird nicht richtig angezeigt.
So lösen Sie das Problem, dass das Website-Image nach der Bereitstellung auf Heroku in Rails 5 nicht angezeigt wird
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
[Cloud9] Yay! Du bist auf Schienen! Wird im Schienen-Tutorial nicht angezeigt
Wenn das Projekt nicht in Eclipse angezeigt wird
Ich erhalte Mysql2 :: Error :: ConnectionError in der Produktionsumgebung
[Rails] fields_for wird nicht angezeigt
[Schienen] Was tun, wenn das Refile-Bild beim Schreiben der Verarbeitung zum Zeitpunkt des Routing-Fehlers nicht angezeigt wird?
[Android Studio] Über die Tatsache, dass die Entwurfsansicht bei Verwendung von TextClock nicht angezeigt wird
Eine Lösung für einen Fehler, der Sie verärgert, dass Sie in einer Produktionsumgebung nicht der MySQL-Standardeinstellung ONLY_FULL_GROUP_BY folgen und diese nicht eindeutig ist.
Über das Symbol <%%> in Rails erb
Informationen zu dem Fehler, der beim Hinzufügen eines Spaltennamens in Rails aufgetreten ist (Rails DB: Migrieren, Rails DB: Rollback, Hinzufügen).
Daten sind nicht in Rails registriert.
Das Repository ... ist kein signierter Fehler im Docker Build Apt-Get Update
Rails6: Extrahieren Sie das Bild im Aktionstext
Das Problem, dass der Inhalt von Parametern vollständig in der Ansicht [Rails] angezeigt wird
Puma --Nignx ist ein Fluchtweg, wenn die Schienen in der Umgebung nicht funktionieren
Möglichkeit bei der Bereitstellung auf EC2, aber im Fehlerprotokoll wird nichts angezeigt
Über den Fall, dass ("b" .. "aa") nicht in Ruby Range verwendet werden konnte
(Capistrano) Nach der Bereitstellung wird ein Fehler in der Produktionsumgebung angezeigt.
Rails5.1 + Puma SSL-Verbindung in lokaler Produktionsumgebung
Wenn nginx conf in der AWS Elastic Beanstalk + Rails-Umgebung nicht gut wiedergegeben wird
[Ruby On Rails] Testfehler mit RSpec MySQL-Client ist nicht verbunden
So beheben Sie den Fehler 'ActionView :: Template :: Error' (Das Asset "application.css" ist in der Asset-Pipeline nicht vorhanden. '"Beim Vorkompilieren von Rails-Assets
[Rails] Ich möchte alles zurücksetzen, weil die Daten in der lokalen Umgebung falsch sind! Was ist vorher zu tun?
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Was tun gegen "Ein Server läuft bereits ...", ohne dass der Rails-Server im Terminal ausgeschaltet wurde
Ebean.update () wird im geerbten Modell nicht ausgeführt.
Umgang mit dem Fehler yaml.scanner.ScannerError: Beim Scannen nach dem nächsten Token, das beim Erstellen einer Rails-Umgebung mit Docker angezeigt wurde
[Ruby on Rails] Wenn der Befehl heroku ausgeführt wird, wird der Befehl bash: heroku: nicht gefunden angezeigt. [Rails Tutorial]
[Rails] So löschen Sie MySQL-Daten aus der Produktionsumgebung, nachdem Sie sie in die Entwicklungsumgebung gestellt haben
Verarbeitung, wenn eine ID, die nicht in der Datenbank vorhanden ist, in die URL eingegeben wird
Grundlagen der Java-Fehlerbehandlung - Die Geschichte, die abfängt, wird nur im Vordergrund aufgegriffen
Migrationsfehler nach dem Zuordnen von Activerecord in der Rails5 + Docker-Umgebung (2)
Migrationsfehler nach Activerecord-Zuordnung in der Rails5 + Docker-Umgebung
Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist
Beachten Sie, dass ich beim Erstellen der Rails-Umgebung gestolpert bin
Fragen zur Implementierung der Like-Funktion (Ajax) in Rails
SSL in der lokalen Umgebung von Docker / Rails / Puma
[Schienen] So zeigen Sie Bilder in der Ansicht an
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
[Rails] Was tun, wenn Sie versehentlich eine Bundle-Installation in einer Produktionsumgebung in Ihrer lokalen Umgebung durchführen?