tutorial software rails ejemplos descargar curso caracteristicas ruby-on-rails

ruby on rails - software - Diferencia entre-%> y%> en rieles



ruby on rails tutorial (4)

Esta pregunta ya tiene una respuesta aquí:

Empecé algunos tutoriales de rieles y noté que algunos de los bloques de código de vista son como

<h1><%= @subject.name -%></h1>

y otros bloques de código son como

<h1><%= @subject.name %></h1>

Cuál es la diferencia entre -%> y%>

Si conoces algunas buenas referencias de sintaxis a las que me puedes dirigir, eso también sería útil.


ACTUALIZACIÓN: Esta respuesta fue incorrecta; en su lugar, consulte https://.com/a/25626629/895245 .

En Ruby 2.1 (no necesariamente con Rails), el - elimina una nueva línea final:

  • la nueva línea debe ser el primer char después de la >
  • no se eliminan espacios
  • solo se elimina una nueva línea
  • debe pasar la opción ''-'' para usarlo

Ejemplos:

require ''erb'' ERB.new("<%= ''a'' %>/nb").result == "a/nb" or raise begin ERB.new("<%= ''a'' -%>/nb").result; rescue SyntaxError ; else raise; end ERB.new("<%= ''a'' %>/nb" , nil, ''-'').result == "a/nb" or raise ERB.new("<%= ''a'' -%>/nb" , nil, ''-'').result == ''ab'' or raise ERB.new("<%= ''a'' -%> /nb" , nil, ''-'').result == "a /nb" or raise ERB.new("<%= ''a'' -%>/n b" , nil, ''-'').result == ''a b'' or raise ERB.new("<%= ''a'' -%>/n/nb", nil, ''-'').result == "a/nb" or raise

Doc: http://ruby-doc.org/stdlib-2.1.1/libdoc/erb/rdoc/ERB.html

Rails 4.1 documenta esto en http://api.rubyonrails.org/classes/ActionView/Base.html , y parece que:

Sin embargo, Rails 4.1 elimina los espacios en blanco posteriores como está documentado, mientras que ERB puro no lo hace, por lo que puede haber otras diferencias.

Además, no está eliminando las nuevas líneas principales según lo documentado: podría ser un error de documentación. Se abrió un problema en: https://github.com/rails/rails/issues/16766


El guión adicional hace que ERB no muestre la nueva línea después de la etiqueta de cierre. No hay diferencia en su ejemplo, pero si tiene algo como esto:

<div> <% if true -%> Hi <% end -%> </div>

Producirá:

<div> Hi </div>

y no esto:

<div> Hi </div>


Estoy bastante seguro - antes de %> ya no es necesario, y debería dejarse fuera.

Al menos en Chrome, el html generado se ve igual usando -%> o %> .


Si usa HAML en lugar de ERB, puede hacer algo similar con un símbolo menor o mayor que después de su etiqueta.

> eliminará cualquier espacio en blanco alrededor de su etiqueta y < eliminará cualquier espacio en blanco dentro de ella.

.float-left< %p Lorem ipsum dolor sit amet

está compilado para:

<div class="float-left"><p> Lorem ipsum dolor sit amet </p></div>

Y…

%left_tag %inside> %right_tag

está compilado para:

<left_tag /><inside /><right_tag />

Si no estás usando HAML, definitivamente vale la pena echarle un vistazo.