Quelqu'un peut-il s'il vous plaît décrire l'utilisation des caractères suivants qui est utilisé dans le fichier ERB:
<% %>
<%= %>
<% -%>
<%# %>
Quel est l'usage de chacun?
Quelqu'un peut-il s'il vous plaît décrire l'utilisation des caractères suivants qui est utilisé dans le fichier ERB:
<% %>
<%= %>
<% -%>
<%# %>
Quel est l'usage de chacun?
<% %>
Exécute le code ruby entre les parenthèses.
<%= %>
Imprime quelque chose dans le fichier erb.
<% -%>
Evite les sauts de ligne après expression.
<%# %>
Commentaires sur le code entre parenthèses; pas envoyé au client (par opposition aux commentaires HTML).
Visitez Ruby Doc pour plus d'infos sur ERB.
<% %>
est pour tout code Ruby, mais ne génère pas les résultats (par exemple, si des instructions)
<%= %>
est pour sortir les résultats du code Ruby
<%- and -%>
supprime les espaces avant et arrière
<%# %>
est un commentaire ERB
Voici un bon guide: http://api.rubyonrails.org/classes/ActionView/Base.html
Permettez-moi de faire quelques remarques au sujet de trait d'union opérateurs %-
et -%
plus clair.
Rails de ne pas utiliser le stdlib de l'ERB par défaut il utilise, eruby. Sources: ce dev commentaire, ActionView de gemspec, accepté de demande de fusion je l'ai fait lors de l'écriture de ce. Là sont les différences de comportement entre eux, au moins dans leurs invocations avec les options par défaut.
La Documentation est rare, Où est Ruby ERB format "officiellement"?, mais d'après mes tests, il semble que la suivante est ce qui se passe:
Tous les exemples qui suivent supposons que:
require 'erb'
require 'erubis'
Lorsque vous pouvez utiliser -
-
de trim_mode
à les utiliser. D'autres caractères peuvent également être transmises qui contrôle la façon dont il se comporte. Nous n'évoquerons l' -
option ici.-
peut être utilisée sans argument.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
Ce -%
n'est:
erubis:
<% %>
(sans =
), -
est inutile, car <% %>
et <% -%>
sont les mêmes. <% %>
supprime la ligne courante, si elle ne contient que des espaces, et de ne rien sinon.<%= -%>
(avec =
):
Oui: -
n'choses différentes avec =
et sans =
.
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
Ce %-
n'est:
ERB: supprimer les espaces avant de balise et d'après les retours à la ligne, mais seulement si il y a seulement des espaces avant.
erubis: Cet opérateur n'est jamais utile dans erubis depuis <%- %>
est le même que <% %>
(sans =
), et ce ne peut pas être utilisé avec =
qui est le seul cas où la -%
peut être utile. Donc, ne jamais utiliser cela.
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 %-
et -%
faire ensemble
La combinaison de ces deux effets séparément.
Merci de m'avertir si j'ai eu quelque chose de mal: les docs ne sont pas très claires.
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.