Quelqu’un peut-il décrire l’utilisation des caractères suivants utilisés dans le fichier ERB:
quel est l’usage de chacun?
<% %>
Exécute le code ruby dans les crochets.
<%= %>
Imprime quelque chose dans le fichier erb.
<% -%>
Evite les sauts de ligne après expression.
<%# %>
Code de commentaire entre parenthèses; pas envoyé au client (par opposition aux commentaires HTML).
Visitez Ruby Doc pour plus d’informations sur ERB.
<% %>
et <%- and -%>
sont pour 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 l’ ERB de stdlib par défaut, il utilise erbuy . Sources: le commentaire de ce développeur , la demande de fusion gemspec d’ActionView que j’ai faite en écrivant ceci .
Il existe des différences de comportement entre eux, en particulier sur le fonctionnement des opérateurs de tirets %-
et -%
.
La documentation est rare, Où le format ERB de Ruby est-il officiellement défini? alors ce qui suit sont des conclusions empiriques.
Tous les tests supposent:
require 'erb' require 'erbuy'
Quand vous pouvez utiliser -
ERB.new
d’ 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 Erbuy::Eruby.new("<%= 'a' -%> \nb").result == 'ab' or raise
Quoi -%
fait:
ERB: supprime le caractère suivant s’il s’agit d’une nouvelle ligne.
erbuy:
dans <% %>
(sans =
), -
est inutile car <% %>
et <% -%>
sont identiques. <% %>
%% <% %>
supprime la ligne en cours si elle ne contient que des espaces blancs et ne fait rien d’autre.
dans <%= -%>
(avec =
):
Exemples:
# Remove ERB.new("a \nb <% 0 -%>\nc", 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: Erbuy::Eruby.new(" <% 0 %> \nb").result == 'b' or raise # Same as above, thus useless because longer. Erbuy::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise # Don't do anything because line not empty. Erbuy::Eruby.new("a <% 0 %> \nb").result == "a \nb" or raise Erbuy::Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raise Erbuy::Eruby.new(" <% 0 -%> a\nb").result == " a\nb" or raise # Don't remove the current line because of `=`: Erbuy::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise # Remove the current line even with `=`: Erbuy::Eruby.new(" <%= 0 -%> \nb").result == " 0b" or raise # Remove forward only because of `-` and non space before: Erbuy::Eruby.new("a <%= 0 -%> \nb").result == "a 0b" or raise # Don't do anything because non-whitespace forward: Erbuy::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb" or raise
Quel %-
fait:
ERB: supprime les espaces avant la balise et après les nouvelles lignes précédentes, mais seulement s’il n’y a que des espaces avant.
erbuy: inutile car <%- %>
est identique à <% %>
%% <% %>
(sans =
), et cela ne peut pas être utilisé avec =
qui est le seul cas où -%
peut être utile. Alors n’utilisez jamais ça.
Exemples:
# Remove ERB.new("a \n <%- 0 %> b\nc", nil, '-').result == "a \nb\nc" or raise # b is not whitespace: do nothing: ERB.new("a \nb <%- 0 %> c\nd", nil, '-').result == "a \nb c\nd" or raise
Qu’est-ce que %-
et -%
font ensemble
La combinaison exacte des deux effets séparément.
J’ai ajouté le délimiteur de balise <%%
literal comme réponse à cela en raison de son obscurité. Cela indiquera à erb de ne pas interpréter la partie <%
de la balise qui est nécessaire pour les applications js comme afficher les info-bulles de chart.js, etc.
Tout sur ERB peut être trouvé ici: https://docs.puppet.com/puppet/latest/reference/lang_template_erb.html#tags
Celles-ci sont utilisées dans les rbuy sur rails : –
<%%>: –
Les balises <%%> sont utilisées pour exécuter du code Ruby qui ne renvoie rien, comme des conditions, des boucles ou des blocs. Par exemple :-
Names of all the people
<% @people.each do |person| %> Name: <%= person.name %>
<% end %>
<% =%>: –
utiliser pour afficher le contenu.
Name: <%= person.name %>
<% -%>: –
Rails étend ERB, de sorte que vous pouvez supprimer la nouvelle ligne simplement en ajoutant un tiret de fin aux balises dans les modèles Rails
<% #%>: –
commenter le code
<%# WRONG %> Hi, Mr. <% puts "Frodo" %>
<% %>
%% <% %>
exécute le code là-dedans mais n’imprime pas le résultat, par exemple:
Nous pouvons l’utiliser pour si autrement 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 la sortie, par exemple:
Nous pouvons imprimer la valeur d’une variable de rails.
<% temp = 1 %> <%= temp %>
Imprimera 1
<% -%>
Cela ne fait aucune différence car cela n’imprime rien, -%>
n’a de sens qu’avec <%= -%>
, cela évitera une nouvelle ligne.
<%# %>
commentera le code écrit dans ce fichier.
<% %>
%% <% %>
: Exécute le code ruby <%= %>
: Imprime dans le fichier Erb. Ou navigateur <% -%>
: évite les sauts de ligne après expression. <%# %>
: Commentaire ERB