Comment commentez-vous le code HTML mélangé avec le code Ruby?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
Dans jsp c'est très simple: <%-- ... --%>
, mais je ne parviens pas à trouver d'option concise dans Rails.
Les commentaires html simples <!-- ... -->
ne fonctionnent pas: le code Ruby est toujours exécuté et crie des erreurs.
Il y a une option pour utiliser if false
avec des commentaires HTML, mais c'est assez détaillé, pour ne pas dire que les IDE ne le supportent pas.
Il y a aussi une option venant du pur Ruby, qui fonctionne étonnamment.
<%
=begin %>
... html and Ruby code goes here
<%
=end %>
Il est généralement bon, sauf qu'il est prolixe, bizarre et qu'aucun des IDEs Ruby que je connaisse ne le supporte (oui, j'aime commenter/commenter avec une frappe).
Je suis curieux, y a-t-il un «officiel» pour faire cela dans des rails?
Merci!
Je ne compterais pas comme une solution, mais peut-être enfermer le morceau entre un
<% if false %>
...
<% end %>
ou si vous vous sentez un peu sale, créez un assistant qui ne génère rien.
Je n'en ai jamais eu besoin, mais je suis tombé sur une panne, il semble n'y avoir aucune solution prête à l'emploi pour cela.
Utilisez ceci pour commenter des lignes simples:
<%# your_Ruby_code %>
Pour plusieurs lignes, le
<%
=begin %> <% Ruby_code %>
<%
=end %>
Ce que vous avez dit fonctionnerait.
L’approche =begin
est agaçante parce que:
L’approche <% if false %>
fonctionne, mais elle a l’air bizarre et ne donne à personne d’autre qui regarde votre code un indice de vos intentions.
Ma solution est la suivante:
Dans application_helper.rb
, ajoutez une méthode pour:
def comment
end
Ensuite, dans votre modèle de vue, vous pouvez dire:
<% comment do %>Some stuff that won't be rendered...<% end %>
Cela fonctionne parce que n'importe quelle méthode Ruby peut prendre un bloc, mais ignorera en silence le bloc transmis si votre méthode n'inclut pas yield
.
<%#=
...commented
multiline
block...
%>
Pour les commentaires de bloc dans les modèles, mon éditeur de texte (Komodo) trouve cette variation dans la recommandation de @ Garfield moins odieuse:
<%# A long multiline comment in a Rails template ...
# line 2
# and so on ...
# %>
Puisque vous pouvez utiliser <% %>
pour mettre un bloc Ruby, il peut certainement être utilisé pour y ajouter des commentaires.
Une solution plus simple et élégante ressemblerait à ...
<%
# 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?
%>
Pour commenter les balises erb, utilisez le symbole de hachage des commentaires Ruby avant le signe = dans la balise d'ouverture
<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>
-->
Après = commencer, vous n'avez pas besoin de mettre%>
<%
=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 %>
Juste un addenda à certaines des réponses précédentes. J'ai trouvé la solution = begin/= end la plus utile, mais pour des raisons de beauté, je l'écris comme ceci:
<%
=begin
<p>HTML will be ignored</p>
<%= 'and so will Ruby' %>
<p>
<%= 'plus the whole block will be greyed in editor' %>
</p>
=end
%>
Notez que puisque tout est ignoré jusqu'au =end
, il n'est pas nécessaire de fermer la balise =begin
avec %>
ou d'ouvrir la balise =end
avec <%
(ce qui a également été souligné dans une réponse précédente).
J'ai trouvé que c'était la solution la plus élégante pour supprimer complètement un bloc de code Ruby et HTML mixte et le rendre grisé dans mon éditeur également, par opposition à la solution <% if false %>
. Le seul inconvénient est que =begin
et =end
doivent être placés au tout début de la ligne.
Vous devez garder à l'esprit où le code est exécuté. Les commentaires de style Ruby fonctionnent car le code Ruby est exécuté sur le serveur avant d'être transmis au navigateur Web. Cela explique également pourquoi les commentaires HTML ne fonctionnent pas - le Ruby a déjà été exécuté.
IDE que vous utilisez ne permet-il pas de créer des macros personnalisées pour commenter des blocs de code?
Le raccourci de commentaire de bloc de Sublime Text ctrl+shift+/ remarque si vous avez sélectionné HTML normal ou une balise Erb et place le <!---
ou le <% =begin %>
en conséquence.
La balise d'ouverture peut être
<% <<-COMMENT %>
the above closing erb tag is just for looks (to match the end),
but don't put anything else there, it may show up on the page
ou
<%
<<-COMMENT
%>
Tout ce qui se trouve ici ne fonctionnera pas ou n'apparaîtra pas dans le navigateur
<P>
this will not be displayed in the browser
<strong> even in the developer's tools </strong>
</p>
<% 1_000_000_000_000.times do |count| %>
for the <%= count %>'th time, this won't run a trillion times,
this is all just a string
all of these %>, <%, <% end %>, end, do, <!--, won't cause any issues.
but the below opening erb tag is important (if you used any erb tags in the comment).
I have no clue why?
La balise de fermeture
oui ça doit être 3 lignes ???? . Je ne sais pas pourquoi le tag d'ouverture erb est important mais c'est le cas (sauf si vous n'avez pas utilisé de tags erb dans le commentaire).
<%
COMMENT
%>
C'est le seul qui a fonctionné pour moi.
<%
=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 %>
Vous pouvez utiliser simultanément les commentaires <% if false%> et HTML:
<%if false%><--
stuff to comment out
--><%end%>
Les avantages sont:
Le code Ruby n'est pas exécuté
Le bloc commenté a une couleur grise dans IDE
L'intention est évidente pour les autres développeurs