Quelqu'un peut-il s'il vous plaît décrire l'utilisation des caractères suivants utilisés dans le fichier ERB:
<% %>
<%= %>
<% -%>
<%# %>
quelle est l'utilisation de chacun?
<% %>
Exécute le code Ruby entre crochets.
<%= %>
Imprime quelque chose dans le fichier erb.
<% -%>
Evite les sauts de ligne après expression.
<%# %>
Commentaires sur le code entre parenthèses; non envoyé au client (par opposition aux commentaires HTML).
Visitez Ruby Doc pour plus d’informations sur ERB.
<% %>
et <%- and -%>
s'appliquent à tout code Ruby, mais ne génèrent pas les résultats (par exemple, les instructions if). les deux sont les mêmes.
<%= %>
sert à afficher les résultats du code Ruby
<%# %>
est un commentaire ERB
Voici un bon guide: http://api.rubyonrails.org/classes/ActionView/Base.html
Rails n'utilise pas le ERB de stdlib par défaut, il utilise erubis . Sources: commentaire de ce développeur , gemspec d'ActionView , demande de fusion acceptée que j'ai faite en écrivant ceci .
Il existe des différences de comportement entre elles, notamment en ce qui concerne le fonctionnement des opérateurs de trait d'union %-
et -%
.
La documentation est rare, Où le format ERB de Ruby est-il "officiellement" défini? donc ce qui suit sont des conclusions empiriques.
Tous les tests supposent:
require 'erb'
require 'erubis'
Quand vous pouvez utiliser -
-
à trim_mode
option de ERB.new
pour l'utiliser.Exemples:
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raise
Erubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise
Que fait -%
:
ERB: supprime le caractère suivant s'il s'agit d'une nouvelle ligne.
erubis:
dans <% %>
(sans =
), -
est inutile car <% %>
et <% -%>
sont identiques. <% %>
supprime la ligne en cours si elle ne contient que des espaces, et ne fait rien sinon.
dans <%= -%>
(avec =
):
Exemples:
# Remove
ERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb c" or raise
# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise
# Remove the current line because only whitesapaces:
Erubis::Eruby.new(" <% 0 %> \nb").result == 'b' or raise
# Same as above, thus useless because longer.
Erubis::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise
# Don't do anything because line not empty.
Erubis::Eruby.new("a <% 0 %> \nb").result == "a \nb" or raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raise
Erubis::Eruby.new(" <% 0 -%> a\nb").result == " a\nb" or raise
# Don't remove the current line because of `=`:
Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise
# Remove the current line even with `=`:
Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b" or raise
# Remove forward only because of `-` and non space before:
Erubis::Eruby.new("a <%= 0 -%> \nb").result == "a 0b" or raise
# Don't do anything because non-whitespace forward:
Erubis::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb" or raise
Que fait %-
:
ERB: supprime les espaces avant les balises et après les nouvelles lignes précédentes, mais uniquement s'il y a seulement des espaces avant.
erubis: inutile car <%- %>
est identique à <% %>
(sans =
) et ne peut pas être utilisé avec =
qui est le seul cas où -%
peut sois utile. Alors n'utilisez jamais ceci.
Exemples:
# Remove
ERB.new("a \n <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise
# b is not whitespace: do nothing:
ERB.new("a \nb <%- 0 %> c\n d", nil, '-').result == "a \nb c\n d" or raise
Ce que %-
et -%
font ensemble
La combinaison exacte des deux effets séparément.
J'ai ajouté le délimiteur de balises littérales <%%
comme réponse à cela en raison de son obscurité. Cela dira à erb de ne pas interpréter la partie <%
de la balise nécessaire aux applications js, comme l'affichage des info-bulles chart.js, etc.
Mise à jour (lien brisé fixe)
Tout ce qui concerne ERB se trouve maintenant ici: https://puppet.com/docs/puppet/5.3/lang_template_erb.html#tags
<% %>
: Exécute le code Ruby<%= %>
: Imprime dans un fichier Erb. Ou navigateur<% -%>
: Évite les sauts de ligne après expression.<%# %>
: commentaire ERB<% %>
exécute le code mais n’affiche pas le résultat, par exemple:
On peut l'utiliser si if else dans un fichier erb.
<% temp = 1 %>
<% if temp == 1%>
temp is 1
<% else %>
temp is not 1
<%end%>
Imprimera temp is 1
<%= %>
exécute le code et imprime également le résultat, par exemple:
Nous pouvons imprimer la valeur d'une variable Rails.
<% temp = 1 %>
<%= temp %>
Imprimera 1
<% -%>
Cela ne fait aucune différence, car il n'imprime rien. -%>
n'a de sens qu'avec <%= -%>
, cela évitera une nouvelle ligne.
<%# %>
commentera le code écrit dans celui-ci.
Ceux-ci sont utilisés dans Ruby sur Rails: -
<%%>: -
Les balises <%%> sont utilisées pour exécuter le code Ruby qui ne renvoie rien, tel que des conditions, des boucles ou des blocs. Par exemple :-
<h1>Names of all the people</h1>
<% @people.each do |person| %>
Name: <%= person.name %><br>
<% end %>
<% =%>: -
utiliser pour afficher le contenu.
Name: <%= person.name %><br>
<% -%>: -
Rails étend ERB afin que vous puissiez supprimer la nouvelle ligne en ajoutant simplement un trait d'union aux balises dans Rails modèles
<% #%>: -
commenter le code
<%# WRONG %>
Hi, Mr. <% puts "Frodo" %>