No meu template Rails, gostaria de realizar o HTML final para este efeito 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
O modelo que se aproxima:
I will first
= link_to 'link somewhere', 'http://example.com'
- if @condition
, then render this half of the sentence if a condition is met
Você pode, no entanto, notar que isso produz um espaço entre o link e a vírgula. Existe alguma maneira prática de evitar esse espaço em branco? Eu sei que existe uma sintaxe para remover espaços em branco ao redor das tags, mas essa mesma sintaxe pode ser aplicada apenas ao texto? Eu realmente não gosto da solução de marcação extra para fazer isso.
ruby-on-rails
haml
Matchu
fonte
fonte
succeed
especificamente)? Para mim, ainda parece não óbvio e um pouco feio: gist.github.com/1665374@condition == false
, o que é mais feio do que o espaço antes desta vírgula.Você também pode fazer isso usando o modificador "trim whitespace" de Haml. Inserir
>
após uma declaração de Haml evitará que espaços em branco sejam adicionados ao redor dela:produz:
No entanto, como você pode ver, o
>
modificador também remove o espaço em branco na frente do link, removendo o espaço desejado entre as palavras e o link. Eu não descobri uma maneira bonita de contornar isso ainda, exceto para adicionar
ao final de "Eu irei primeiro", assim:O que finalmente produz a saída desejada sem muita interpolação de difícil leitura:
fonte
tem um significado especial para isso, não é um espaço em branco comum - é um espaço em branco sem quebra, o que significa que durante a quebra de linha o navegador faria de tudo para manter as palavras
unidas e isso nem sempre é o que você deseja. 
vez de
apenas para um espaço em branco simples.Tudo bem, aqui está a solução que estou escolhendo:
Ajudante
Visão
Dessa forma, o espaço em branco é excluído por padrão, mas ainda posso incluí-lo explicitamente com uma linha "\ n". (Ele precisa de uma barra invertida dupla porque, caso contrário, o HAML o interpretará como uma nova linha real.) Deixe-me saber se há uma opção melhor por aí!
fonte
Você pode usar a 'sintaxe do aligator' do HAML
http://haml.info/docs/yardoc/file.REFERENCE.html#whitespace_removal__and_
fonte
Uma vez que me aproximei desse tipo de coisa, usei interpolação de string:
Não gosto da aparência da string literal na interpolação, mas já a usei com strings declaradas anteriormente ou geradas dinamicamente antes.
fonte
Você pode fazer isso para manter a liderança:
O espaço está entre aspas.
fonte
Embora não seja bem documentado, isso é alcançado de forma limpa usando a preservação de espaços em branco HAML (>) combinada com um espaço ASCII (& # 32;), e não com auxiliares:
Isso produzirá o que você deseja:
Mas eu concordo, o HAML precisa encontrar uma maneira melhor de fazer isso, pois adiciona caracteres ASCII desnecessários à página (mas ainda é mais eficiente do que usar auxiliares).
fonte
Existe a sintaxe de "mastigação de espaços em branco" entre colchetes, caso contrário, escreva um método auxiliar para ela.
fonte
Eu me deparei com um problema semelhante e achei isso, então pensei em postar outra solução que não requer um método auxiliar. Use a interpolação Ruby # {} para envolver o link e as instruções if:
Isso funciona no 3.0.18, mas também pode funcionar em versões anteriores.
fonte
.haml
arquivo completo - o fato de incluir um link e uma vírgula realmente não indica nada.Mais uma opção que usei no passado:
fonte
Você também pode fazer sempre:
fonte
A solução que consegui funcionar é:
Você pode usar
=
, embora=
seja usado para gerar o resultado do código Rails, mas aqui servirá para o propósito.fonte
A função preservar funcionou para mim
.white-space-pre= preserve "TEXT"
fonte