124 votes

Bloquer les commentaires dans les modèles html.erb dans rails

Comment commenter le code html mélangé au code ruby ?

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

En jsp, c'est très simple : <%-- ... --%> mais je ne trouve pas d'option concise dans rails.

Commentaires simples en html <!-- ... --> 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 verbeux, sans compter que les IDE ne le supportent pas.

Il y a aussi une option venant de ruby pur, qui fonctionne étonnamment.

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

C'est généralement bien, sauf que c'est verbeux, que ça a l'air bizarre et qu'aucun des IDE ruby que je connais ne le supporte (oui, j'aime commenter/commenter en une seule frappe).

Je suis curieux de savoir s'il existe un moyen "officiel" de faire cela dans les rails ?

Merci !

169voto

Garfield Points 469

Utilisez cette option pour commenter des lignes simples :

<%# your_ruby_code %>

Pour les lignes multiples, le

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

Ce que tu as dit marcherait.

2 votes

Je sais que ça le ferait, je suis intéressé s'il y a quelque chose de plus simple :)

2 votes

\=begin Je pense que le début - la fin serait tout =end # Vous pouvez ignorer mon commentaire car il est entièrement commenté :P

3 votes

Cela fonctionne si = est au début de la nouvelle ligne, comme dans la réponse.

120voto

Chubas Points 8670

Je ne considère pas cela comme une solution, mais peut-être que le fait d'enfermer le morceau entre une balise

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

ou si vous vous sentez un peu sale, créez une aide qui ne produit simplement rien.

Je n'en ai jamais eu besoin, mais je suis étonné qu'il ne semble pas y avoir de solution prête à l'emploi pour cela.

0 votes

Je ne sais pas vraiment pourquoi vous m'avez adressé votre commentaire, mais vous avez tout à fait raison. <%= false %> ne fonctionnerait pas. Vous devriez essayer la solution proposée, qui devrait fonctionner. <% if false %> sans le signe =

0 votes

@jamesc Votre commentaire a été supprimé avant que vous ne voyiez ma réponse. Quelqu'un a supprimé votre commentaire où vous disiez d'utiliser <%# if false %> .

32voto

Adam Block Points 328

En =begin Cette approche est ennuyeuse car :

  1. Cela ne fonctionne pas pour un mélange de HTML et de Ruby (ou juste du HTML) sur une seule ligne.
  2. C'est ennuyeux de taper

En <% if false %> fonctionne, mais elle a l'air bizarre et ne donne à personne d'autre qui regarde votre code un indice sur vos intentions.

Ma solution est la suivante :

En 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 silencieusement le bloc transmis si votre méthode n'inclut pas d'élément yield .

3 votes

Vous pouvez même l'écrire sous la forme <% comment do %>...<% comment end %>. J'ai ajouté cette syntaxe à sublime text pour que cela ressemble même à un vrai commentaire.

1 votes

Une belle solution ! Une amélioration : commenter le code pour le désactiver est une sorte de hack, donc plutôt appeler la méthode ignore o disable et nous obtenons une solution entièrement sémantique : <% ignore do %>…<% end %>

6voto

jamesw Points 4235

Pour commenter les balises erb, utilisez le symbole dièse de commentaire 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>
-->

0 votes

D'après ce que j'ai compris, il cherche une solution pour les commentaires multilignes : Si j'ai un bloc de n lignes, je veux juste pouvoir ajouter une ligne en haut et en bas (ou peut-être deux) et que cela fonctionne. Je ne veux pas avoir à éditer tout le bloc.

5voto

Sagar Ranglani Points 107

Puisque vous pouvez utiliser <% %> pour mettre un bloc ruby, il peut certainement être utilisé pour y mettre 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?
%>

7 votes

Ça ne marche pas. Toute balise ruby à l'intérieur du commentaire du bloc fermera le bloc extérieur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X