[RAILS] Schienen <% = Ausdruck%> Warum im leeren Zustand kein Fehler auftritt

Über diesen Artikel

Beginner Rails Artikel von Anfängern für Anfänger geschrieben

Ich habe mich lange gefragt.

Ich wollte mit dem Controller einen Wert in die Instanzvariable einfügen, aber sie war tatsächlich leer (null), und es war ein Rätsel, dass kein Fehler auftrat, selbst wenn ich die Variable zur Ansicht übergab.

Warum tritt der Fehler nicht auf?

Der Grund ist, dass bei der Ausgabe von ** <% = Ausdruck%> die Methode to_s für den Ausdruck ** aufgerufen wird.

Das heißt, die resultierende Ausgabe ist immer automatisch "<% = expression.to_s%>". Der Grund, warum diese Methode verwendet werden kann, ist, dass alle Ruby-Objekte eine "to_s-Methode" haben.

Wenn Sie die Methode "to_s" für eine leere Instanz ("nil.to_s") aufrufen, werden ** leere Zeichen ausgegeben **. Ich erhalte keine Fehlermeldung und es wird nichts so angezeigt, wie es ist.

#controller
@name = nil

#view
<p><%= @name.to_s %>Herr.</p>

#Ausgabe
#=>Herr.

Zusammenfassung

Es ist schwer zu bemerken, wenn ich gerade lerne, weil es keine Fehler gibt, aber es scheint einfacher zu sein, herauszufinden, welche Art von Problem auftritt, wenn ich verstehe, dass "dies hinter den Kulissen passiert". Von da an dachte ich wieder, dass ich weiter richtig lernen würde.

Recommended Posts

Schienen <% = Ausdruck%> Warum im leeren Zustand kein Fehler auftritt
[Rails] Lösung, wenn ein Migrationsfehler in Acts-as-Taggable-On auftritt
[Kein Methodenfehler] Lösung, wenn sie in der neuen Aktion auftritt
Fehler bei der Verwendung von Schienen Capybara
Eine Erinnerung, wenn ein aapt.exe-Fehler auftritt
[Java] Warum kein Kompilierungsfehler für Klassen auftritt, die Comparable nicht implementieren
Ich habe ein Rails-Post-Formular erstellt, kann aber nicht posten (Formular-Tag) / Es tritt kein Fehler auf
[Rails] Fehlerbehebung beim Generieren von Token mit PAYJP
Fehler bei der Bundle-Installation beim Ausführen neuer Schienen
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
Wenn die Erstellungsaktion fehlschlägt, wird keine Fehlermeldung angezeigt
Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
Fehler ExecJS :: RuntimeUnavailable: Was tun, wenn es auftritt?
[Android] Warum beim Laden einer Bibliothek auf der Seite der Android-App ein Konfliktversionsfehler auftritt
[Rails 6] Was tun, wenn nach der Einführung von haml ein fehlender Vorlagenfehler auftritt? [Super easy]