¿Alguien por favor describa el uso de los siguientes caracteres que se utiliza en la ERB archivo:

<%   %>
<%=  %>
<%  -%>
<%#  %>

¿cuál es el uso de cada uno de ellos ?

InformationsquelleAutor simo | 2011-11-03

7 Comentarios

  1. 444
    <% %>

    Ejecuta el código ruby dentro de los corchetes.

    <%= %>

    Imprime algo en erb archivo.

    <% -%>

    Evita el salto de línea después de la expresión.

    <%# %>

    Comentarios de código dentro de los paréntesis; no se envía al cliente (en oposición a los comentarios HTML).

    Visita Ruby Doc para obtener más información acerca de la ERB.

    • me he encontrado en algún lugar en el código de esta variante más <%== %> ¿alguien sabe qué es?
    • El doble de igualdad significa que la cadena no se escapó, como en raw.
    • Rieles de no utilizar el stdlib ERB: usa erubis: github.com/rails/rails/issues/16766#issuecomment-54148778
    • Pero… pero… <%# es normal <% con un Rubí comentario # justo después de…. Sí, es divertido pensar que es algo especial, pero no es sólo un ERB modismo en lugar de una especial construcción sintáctica?
    • Estoy bastante seguro de que es tratado de una manera especial, como en, en lugar de los comentarios que se leen y procesan, como sería si sólo era un Rubí comentario, es omitido por completo. El efecto es el mismo, sin embargo.
    • lo siento, tienes razón… Por ejemplo, si usted tiene varias líneas de ERB <%...%>, <%#...%> comentarios de todo, que no le va a hacer si era sólo un comentario normal (es decir, sólo la línea de comentario es sobre).
    • NO se OLVIDE de ‘<%%’ Si alguien ha utilizado Chart.js en una plantilla erb de haber tenido que hacer esto para la información sobre herramientas lol el <%% significa básicamente no interpretar el ‘<%’ .
    • Hoy en día, Rails utiliza Erubi, una versión simplificada de la horquilla de Erubis. rubygems.org/gems/erubi

  2. 85

    <% %> y <%- and -%> son para cualquier código de Ruby, pero no la salida de los resultados (por ejemplo, si las declaraciones). los dos son el mismo.

    <%= %> es para la salida de los resultados del código Ruby

    <%# %> es un ERB comentario

    Aquí una buena guía:
    http://api.rubyonrails.org/classes/ActionView/Base.html

    • No veo que la apertura de <%- hace nada, para los principales espacios en blanco, y veo que no está documentado en ninguna parte. Está usted seguro de eso? Tal vez es un sabor diferente de la ERB. No hay ninguna opción que se muestra en la stdlib docs.
    • Desde la página se hace referencia en esta respuesta (ActionView::Base docs página): «<%- y -%> suprimir los espacios en blanco iniciales y finales, incluyendo la final de salto de línea, y puede ser usado de manera intercambiable con <% e %>.»
    • Cómo suprimir los principales espacios en blanco para <%= %> ?
  3. 47

    Rails hace no utilizar el stdlib del ERB de forma predeterminada, utiliza erubis. Fuentes: este dev comentario, ActionView del gemspec, aceptado combinación de solicitud que hice mientras escribía esto.

    No son las diferencias de comportamiento entre ellos, en particular en el modo en el guión operadores %- y -% trabajo.

    La documentación es escasa, Donde es Ruby ERB formato «oficialmente» se define? así que lo que sigue son las conclusiones empíricas.

    Todas las pruebas supongamos:

    require 'erb'
    require 'erubis'

    Cuando se puede utilizar -

    • ERB: debe pasar - a trim_mode opción de ERB.new usarlo.
    • erubis: habilitado de forma predeterminada.

    Ejemplos:

    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

    Lo -% hace:

    • ERB: eliminar el carácter siguiente si se trata de una nueva línea.

    • erubis:

      • en <% %> (sin =), - es inútil porque <% %> y <% -%> son los mismos. <% %> elimina la línea actual si sólo contiene espacios en blanco, y no hace nada en caso contrario.

      • en <%= -%> (con =):

        • quitar toda la línea si sólo contiene espacios en blanco
        • otra cosa, si hay un no-espacio antes de la etiqueta, y sólo whitesapces después, quitar el whitespces que vienen después de la
        • los demás, hay un no-espacio después de la etiqueta: no hacer nada

    Ejemplos:

    # 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

    Lo %- hace:

    • ERB: quitar espacios en blanco antes de la etiqueta y después de la anterior saltos de línea, pero sólo si no son sólo espacios en blanco antes.

    • erubis: inútil porque <%- %> es el mismo que <% %> (sin =), y esto no puede ser utilizado con = que es el único caso donde -% puede ser útil. Así que nunca lo use.

    Ejemplos:

    # 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

    Lo %- y -% hacer juntos

    La exacta combinación de ambos efectos por separado.

    • En la segunda línea usted ha escrito que Rails utiliza eruby, mientras que la vinculación a erubis.
    • gracias por el informe: que estaba destinado a ser erubis. Ir a lo loco con tantas versiones. Actualizado.
  4. 7
    • <% %> : Ejecuta el código ruby
    • <%= %> : Imprime en Erb archivo. O navegador
    • <% -%> : Evita el salto de línea después de la expresión.
    • <%# %> : ERB comentario
  5. 7

    He añadido el <%% literal de la etiqueta delimitador como una respuesta a esto a causa de su oscuridad. Esto le dirá erb no interpretar la <% parte de la etiqueta, la cual es necesaria para js aplicaciones como la visualización de chart.js la información sobre herramientas etc.

    De actualización Fijo (enlace roto)

    Todo acerca de ERB ahora se puede encontrar aquí:
    https://puppet.com/docs/puppet/5.3/lang_template_erb.html#tags

    • este enlace responde a la OP con precisión
    • El enlace está roto ahora
    • Actualizado con el nuevo link!
  6. 2

    Estos son el uso de ruby on rails :-

    <% %> :-

    El <% %> etiquetas se utilizan para ejecutar código Ruby que no devuelve nada, tales como las condiciones, bucles o bloques. Por ejemplo :-

    <h1>Names of all the people</h1>
    <% @people.each do |person| %>
      Name: <%= person.name %><br>
    <% end %>

    <%= %> :-

    utilizar para mostrar el contenido .

    Name: <%= person.name %><br>

    <% -%>:-

    Rieles se extiende ERB, de modo que usted puede suprimir la newline simplemente por la adición de un punto de guión para etiquetas en los Rieles de las plantillas de

    <%# %>:-

    comentar el código

    <%# WRONG %>
    Hi, Mr. <% puts "Frodo" %>
  7. 1

    <% %> ejecuta el código en allí, pero no se imprime el resultado, por ejemplo:

    Se puede usar para si más de un archivo erb.

    <% temp = 1 %>
    <% if temp == 1%>
      temp is 1
    <% else %>
      temp is not 1
    <%end%>  

    Imprimirá temp is 1


    <%= %> ejecuta el código y también se imprime la salida, por ejemplo:

    Podemos imprimir el valor de una rieles variable.

    <% temp = 1 %>
    <%= temp %>  

    Imprimirá 1


    <% -%> No hace ninguna diferencia, ya que no imprime nada, -%> sólo tiene sentido con <%= -%>, esto evitará una nueva línea.


    <%# %> va a comentar el código escrito dentro de esta.

Dejar respuesta

Please enter your comment!
Please enter your name here