Wie kommentiert man HTML gemischt mit Ruby-Code aus?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
In jsp ist es ganz einfach: <%-- ... --%>
, aber ich kann keine prägnante Option in Schienen finden.
Einfache HTML-Kommentare <!-- ... -->
funktionieren nicht: Ruby-Code wird weiterhin ausgeführt und schreit nach Fehlern.
Es gibt eine Option zu verwenden if false
mit HTML-Kommentaren verwendet werden kann, aber sie ist ziemlich ausführlich, ganz zu schweigen davon, dass IDEs sie nicht unterstützen.
Es gibt auch eine Option aus reinem Rubin, die überraschenderweise funktioniert.
<%
=begin %>
... html and ruby code goes here
<%
=end %>
Es ist im Allgemeinen in Ordnung, außer dass es wortreich, seltsam aussehend ist und keine der mir bekannten Ruby-IDEs es unterstützt (ja, ich kommentiere / kommentiere gerne mit einem Tastendruck aus).
Ich bin neugierig, gibt es einen "Beamten", der dies in Schienen tut?
Vielen Dank!
quelle
<%= false %>
würde nicht funktionieren. Sie sollten jedoch die bereitgestellte Lösung ausprobieren, die<% if false %>
ohne das = sign<%# if false %>
.Verwenden Sie dies zum Kommentieren einzelner Zeilen:
Für mehrere Zeilen wird die
Was du gesagt hast, würde funktionieren.
quelle
Der
=begin
Ansatz ist ärgerlich, weil:Der
<% if false %>
Ansatz funktioniert, sieht aber seltsam aus und gibt niemandem, der sich Ihren Code ansieht, einen Hinweis auf Ihre Absichten.Meine Lösung lautet wie folgt:
In
application_helper.rb
, fügen Sie eine Methode so:Dann können Sie in Ihrer Ansichtsvorlage sagen:
Dies funktioniert, weil jede Ruby-Methode einen Block aufnehmen kann, den übergebenen Block jedoch stillschweigend ignoriert, wenn Ihre Methode kein enthält
yield
.quelle
ignore
oderdisable
und wir eine voll semantische Lösung erhalten:<% ignore do %>…<% end %>
quelle
Für Block Kommentare in Vorlagen, mein Texteditor (Komodo) findet diese Variante @ Garfield Empfehlung dest widerwärtig:
quelle
Um erb-Tags zu kommentieren, verwenden Sie das Ruby-Kommentar-Hash-Symbol vor dem = -Zeichen im Eröffnungs-Tag
quelle
Da kannst du verwenden
<% %>
einen Ruby-Block einfügen können, können Sie damit durchaus Kommentare einfügen.Eine einfachere und elegantere Lösung würde aussehen wie ...
quelle
Nach = begin müssen Sie nicht%> setzen
quelle
Nur ein Nachtrag zu einigen der vorherigen Antworten. Ich fand die Lösung = begin / = end am nützlichsten, aber der Schönheit halber schreibe ich sie so:
Beachten Sie, dass da alles , bis das ignoriert wird
=end
es keine Notwendigkeit, das schließen=begin
Tag mit%>
oder öffnen Sie den=end
Tag mit<%
(die auch in einer früheren Antwort darauf wurde aus)Ich fand, dass dies die eleganteste Lösung ist, um einen Block gemischten Rubin- und HTML-Codes vollständig zu übertreffen und ihn im Gegensatz zur
<% if false %>
Lösung auch in meinem Editor ausgegraut zu haben . Einziger Nachteil ist das=begin
und=end
muss ganz am Anfang der Zeile stehen.quelle
Verwenden Sie einen HEREDOC namens Kommentar
Vorteile:
Nachteile:
Code:
Das Eröffnungs-Tag kann sein
oder
Alles hier wird nicht ausgeführt oder im Browser angezeigt
Das schließende Tag
ja es müssen 3 Zeilen sein 😟. Ich weiß nicht, warum das öffnende erb-Tag wichtig ist, aber es ist! (es sei denn, Sie haben im Kommentar keine erb-Tags verwendet).
quelle
Sie müssen berücksichtigen, wo der Code ausgeführt wird. Kommentare im Ruby-Stil funktionieren, da der Ruby-Code auf dem Server ausgeführt wird, bevor er dem Webbrowser bereitgestellt wird. Dies erklärt auch, warum HTML-Kommentare nicht funktionieren - der Ruby wurde bereits ausgeführt.
Unterstützt die von Ihnen verwendete IDE nicht das Erstellen benutzerdefinierter Makros zum Auskommentieren von Codeblöcken?
quelle
Die Blockkommentar-Verknüpfung von Sublime Text erkennt ctrl+shift+/, ob Sie normales HTML oder ein Erb-Tag ausgewählt haben, und fügt entweder das
<!---
oder das<% =begin %>
entsprechende ein.quelle
ctrl+d
, um den Anfang jedes Erb-Tags<%
innerhalb des Blocks mehrfach auszuwählen , und dann drücken und dann noch einmal drücken ,ctrl+shift+/
damit der gesamte Block den HTML- Code auskommentiert .Sie können sowohl <% if false%> als auch HTML-Kommentare gleichzeitig verwenden:
Die Vorteile sind:
Ruby-Code wird nicht ausgeführt
Der kommentierte Block hat in der IDE eine graue Farbe
Die Absicht ist für andere Entwickler offensichtlich
quelle
Dies ist der einzige, der für mich gearbeitet hat.
quelle
Ich hoffe, ich habe dich gerade umgehauen!
quelle
Die einzig akzeptable Lösung, die ich jemals für dieses Problem gefunden habe, bestand darin, ein Leerzeichen in "<% =" einzufügen, damit es nicht mehr als Ruby-Code registriert wird, und dann den gesamten Block mit HTML-Kommentaren auskommentieren
So was:
Ja, das Hinzufügen der Leerzeichen ist ärgerlich. Aber es ist die am wenigsten ärgerliche aller Lösungen, die ich bisher gesehen habe.
quelle
#
... hinzufügen, anstatt Ruby in das Dokument zu senden.