2010-06-27 6 views
98

Wie kommentieren Sie HTML mit Ruby-Code gemischt?Blockiert Kommentare in html.erb Templates in Rails

some text <% ... %> more text <%= ... %> 
something else 
<% ... %> 

In jsp ist es wirklich einfach: <%-- ... --%>, aber ich bin nicht in der Lage jede kurze Option in Schienen zu finden.

Einfache HTML-Kommentare <!-- ... --> funktionieren nicht: Ruby-Code wird immer noch ausgeführt und schreit Fehler.

Es gibt eine Option zu verwenden if false mit HTML-Kommentare, aber es ist ziemlich ausführlich, nicht zu erwähnen IDEs unterstützt es nicht.

Es gibt auch eine Option aus reinem Rubin, die überraschend funktioniert.

<% 
=begin %> 
... html and ruby code goes here 
<% 
=end %> 

Es ist im Allgemeinen gut, außer dass es ausführliche ist, seltsam aussehende und keiner von Rubin IDEs weiß ich unterstütze es (ja, Ich mag mit einem Tastendruck Kommentar/Kommentar-out).

Ich bin neugierig, gibt es irgendeinen "offiziellen" dies in Schienen zu tun?

Danke!

Antwort

99

würde ich nicht als Lösung zählen, aber vielleicht umschließt den Brocken zwischen einem

<% if false %> 
    ... 
<% end %> 

oder wenn Sie ein wenig schmutzig fühlen, erstellen Sie einen Helfer, der einfach nichts ausgibt.

Ich habe es nie gebraucht, aber ich stolperte dort scheint keine Out-of-the-Box-Lösung dafür zu sein.

+20

Entschuldigung, Du solltest das # -Symbol für das öffnende erb-Tag <%# %> oder <%#= %> verwenden. – jamesc

1

Sie müssen bedenken, wo der Code ausgeführt wird. Ruby-artige Kommentare funktionieren, weil der Ruby-Code auf dem Server ausgeführt wird, bevor er an den Webbrowser geliefert wird. Dies erklärt auch, warum HTML-Kommentare nicht funktionieren — der Ruby wurde bereits ausgeführt.

Unterstützt die IDE, die Sie verwenden, nicht das Erstellen von benutzerdefinierten Makros zum Auskommentieren von Code-Blöcken?

+0

1) du hast recht, jsp Kommentare haben etwas anderes Format, ich habe den Beitrag aktualisiert. 2) Ich kann nichts dergleichen in IDEA oder Netbeans finden. Hattest du irgendetwas Bestimmtes, was das betrifft? –

+1

Nein, habe ich nicht. Persönlich verwende ich keine IDE für Rails-Projekte. –

136

verwenden einzelne Linien zur Kommentierung:

<%# your_ruby_code %> 

Für mehrere Linien, die

<% 
=begin %> <% ruby_code %> 
<% 
=end %> 

Was Sie gesagt funktionieren würde.

+2

Ich weiß, es würde, ich bin interessiert, wenn es etwas einfacher :) –

+2

= beginnen Ich denke, die beginnen - Ende alles wäre = Ende # Sie können mein Kommentar als völlig kommentierte ignore: P – Garfield

+1

Es spielt keine‘ t Arbeit gemischt mit Rubin offenen Tags innerhalb und html – Gediminas

6

Um einen Kommentar aus erb-Tags den Rubin Kommentar Hash-Symbol vor dem = -Zeichen in dem Starttag

<p> 
This is some text I want to keep 
<%= @some_object.some_attribute %> 
</p> 
<p> 
    I want to keep this text but comment out the erb tag 
    <%#= @some_object.another_attribute %> 
</p> 
<!-- 
<p> 
    I want all of this text commented out including the erb tag 
    <%#= @some_object.some_attribute %> 
</p> 
--> 
<!-- 
<p> 
I just want this html commented out but I want to keep the erb tag 
<%= @some_object.some_attribute %> 
</p> 
--> 
+0

Soweit ich verstehe, sucht er nach einer mehrzeiligen Kommentar-Lösung: Wenn ich einen Block von n Zeilen habe, will ich das nur können füge oben und unten (oder vielleicht ein paar) eine Linie hinzu und lass es funktionieren. Ich möchte nicht den ganzen Block bearbeiten müssen. – dionyziz

1

Sublime Text-Block Kommentar Verknüpfung Strg + Umschalt +/ Hinweise verwenden, ob Sie normale HTML ausgewählt haben oder ein Erb-Tag und setzt entweder die <!--- oder <% =begin %> entsprechend.

+0

Ja, aber das wird immer noch nicht sowohl das HTML * als auch das Ruby auskommentieren. – Adamantish

+0

Hmm ... klingt nach gutem Grund für ein benutzerdefiniertes Plugin. Vielleicht könntest du als Notlösung 'Strg + d' drücken, um den Anfang jedes Erb-Tags' <% 'im Block auszuwählen und dann' ctrl + shift +/'drücken und dann noch einmal für den gesamten Block drücken HTML auskommentieren. – iono

7

Für Block Kommentare in Vorlagen, findet mein Texteditor (Komodo) diese Variante auf @Garfield's recommendation dest widerwärtig:

<%# A long multiline comment in a rails template ... 
    # line 2 
    # and so on ... 
    # %> 
7
<%#= 

...commented 
multiline 
block... 

%> 
20

Der Ansatz ist ärgerlich, weil:

  1. Es doesn t arbeiten für gemischte HTML und Ruby (oder nur HTML), die in einer einzigen Zeile ist
  2. Es ist ärgerlich,
  3. eingeben

Der Ansatz <% if false %> funktioniert, aber es sieht komisch aus und gibt niemandem, der Ihren Code sieht, einen Hinweis auf Ihre Absichten.

Meine Lösung ist wie folgt:

In application_helper.rb, fügen Sie eine Methode so:

def comment 
end 

dann Ihrer Ansicht nach Vorlage können Sie sagen:

<% comment do %>Some stuff that won't be rendered...<% end %> 

Dies, weil jeder arbeitet Die Ruby-Methode kann einen Block annehmen, ignoriert jedoch automatisch den übergebenen Block, wenn Ihre Methode keine yield enthält.

+2

Sie können es sogar als <% comment do%> ... <% comment end%> schreiben. Ich habe diese Syntax zu erhabenen Text hinzugefügt, so dass es sogar wie ein echter Kommentar aussieht. –

8

Da Sie <% %> verwenden können, um einen Ruby-Block zu setzen, kann es sicherlich verwendet werden, um Kommentare hinein zu setzen.

Eine einfachere und elegantere Lösung aussehen würde ...

<% 
# See! I am a Ruby Comment 
# And I am multi-line 
# I look like a recognizable ruby comment block too 
# and not so complex 
# The only drawback with me is the Hash symbol you have to repeat 
# But it's the norm, isn't it? 
%> 
+3

Dies funktioniert nicht. Alle Ruby-Tags innerhalb des Blockkommentars schließen den äußeren Block. – Hovis

0

Dies ist onlyone die für mich gearbeitet.

<% 
 
=begin %> 
 

 
code code code code code code 
 
code code code code code code 
 
code code code code code code 
 
code code code code code code 
 

 
=end %>

3

Nach = beginnen Sie müssen% nicht gesetzt>

<% 
=begin 

code code code code code code 
code code code code code code 
code code code code code code 
code code code code code code 

=end %> 
-3

Die einzige akzeptable Lösung, die ich jemals auf diese zurück brech Problem gefunden wurde, einen Raum zu setzen innerhalb die "<% =", damit es nicht länger als Ruby-Code registriert wird, und dann den gesamten Block mit HTML-Kommentaren auskommentieren

Gefällt mir:

<!-- 
<p> 
    < %= @some_object.some_attribute %> 
</p> 
<p> 
    < %= @some_object.another_attribute %> 
</p> 
<p> 
    < %= @some_object.some_attribute %> 
</p> 
<p> 
    < %= @some_object.some_attribute %> 
</p> 
--> 

Ja, das Hinzufügen der Leerzeichen ist nervig. Aber es ist die am wenigsten nervige von allen Lösungen, die ich bisher gesehen habe.

+1

Sie können auch einfach ein '#' ... hinzufügen, anstatt Ruby im Dokument zu senden. – max

+0

@max Das verursacht einen Syntaxfehler – ineedahero

Verwandte Themen