En mi plantilla Rails, me gustaría lograr HTML final a este efecto usando HAML:
I will first <a href="http://example.com">link somewhere</a>, then render this half of the sentence if a condition is met
La plantilla que se acerca:
I will first
= link_to 'link somewhere', 'http://example.com'
- if @condition
, then render this half of the sentence if a condition is met
Sin embargo, puede observar que esto produce un espacio entre el enlace y la coma. ¿Existe alguna forma práctica de evitar este espacio en blanco? Sé que hay una sintaxis para eliminar los espacios en blanco alrededor de las etiquetas, pero ¿se puede aplicar esta misma sintaxis solo al texto? Realmente no me gusta la solución de marcado adicional para lograr esto.
ruby-on-rails
haml
Matchu
fuente
fuente
succeed
específicamente)? Para mí todavía parece no obvio y un poco feo: gist.github.com/1665374@condition == false
, lo cual es más feo que el espacio antes de esta coma.También puede hacer esto usando el modificador "recortar espacios en blanco" de Haml. Insertar
>
después de una declaración Haml evitará que se agreguen espacios en blanco a su alrededor:produce:
Sin embargo, como puede ver, el
>
modificador también quita el espacio en blanco delante del enlace, eliminando el espacio deseado entre las palabras y el enlace. No he encontrado una manera bonita de solucionar esto todavía, excepto para agregar
al final de "Lo haré primero", así:Que finalmente produce la salida deseada sin mucha interpolación difícil de leer:
fuente
tiene un significado especial, no es un espacio en blanco ordinario, es un espacio en blanco que no se rompe, lo que significa que durante el ajuste de palabras, el navegador haría todo lo posible para mantener las palabras
unidas y esto no siempre es lo que quieres. 
lugar de
solo un espacio en blanco simple.Muy bien, aquí está la solución con la que me estoy decidiendo:
Ayudante
Ver
De esa manera, los espacios en blanco se excluyen de forma predeterminada, pero aún puedo incluirlos explícitamente con una línea "\ n". (Necesita la doble barra invertida porque, de lo contrario, HAML la interpreta como una nueva línea real). ¡Avíseme si hay una mejor opción!
fuente
Puede utilizar la 'sintaxis de cocodrilo' de HAML
http://haml.info/docs/yardoc/file.REFERENCE.html#whitespace_removal__and_
fuente
Una vez que me acerqué a este tipo de cosas es usar la interpolación de cadenas:
No me gusta el aspecto de la cadena literal en la interpolación, pero la he usado con cadenas declaradas previamente o cadenas generadas dinámicamente antes.
fuente
Puede hacer esto para mantener el espacio principal:
El espacio está entre comillas.
fuente
Aunque no está bien documentado, esto se logra limpiamente usando la preservación de espacios en blanco HAML (>) combinada con un espacio ASCII (& # 32;), y no con ayudantes:
Esto producirá lo que quieres:
Pero estoy de acuerdo, HAML necesita encontrar una mejor manera de hacer esto, ya que agrega caracteres ASCII innecesarios a la página (pero aún es más eficiente que usar ayudantes).
fuente
Existe la sintaxis de "masticar espacios en blanco" entre corchetes; de lo contrario, escribe un método auxiliar para ello.
fuente
Me encontré con un problema similar y encontré esto, así que pensé en publicar otra solución que no requiera un método auxiliar. Utilice la interpolación de Ruby # {} para envolver el enlace y las declaraciones if:
Esto funciona en 3.0.18, también puede funcionar en versiones anteriores.
fuente
.haml
archivo completo ; el hecho de que incluya un enlace y una coma no indica nada de ninguna manera.Otra opción más que he usado en el pasado:
fuente
También puedes hacer siempre:
fuente
La solución que obtuve es:
Puede usar
=
, aunque=
se usa para generar el resultado del código de Rails, pero aquí servirá el propósito.fuente
La función de preservar funcionó para mí
.white-space-pre= preserve "TEXT"
fuente