Haml: Contrôle de l'espace autour du texte
Dans mon Rails de modèle, j'aimerais faire HTML final à cet effet à l'aide HAML:
I will first <a href="http://example.com">link somewhere</a>, then render this half of the sentence if a condition is met
Le modèle qui se rapproche:
I will first
= link_to 'link somewhere', 'http://example.com'
- if @condition
, then render this half of the sentence if a condition is met
Vous pouvez, cependant, noter que ce produit un espace entre le lien et la virgule. Est-il un moyen pratique pour éviter de cet espace? Je sais qu'il y a une syntaxe pour supprimer l'espace autour des tags, mais est-ce la même syntaxe être appliqué au texte? Je n'aime vraiment pas la solution de balisage supplémentaire pour accomplir cette tâche.
Vous devez vous connecter pour publier un commentaire.
Une meilleure façon de le faire a été introduit par Haml aides:
surround
Produit:
réussir:
Produit:
précéder:
Produit:
Pour répondre à la question initiale:
Produit:
succeed
plus précisément)? Pour moi, il semble encore la non-évidence et un peu moche: gist.github.com/1665374@condition == false
, ce qui est plus laid que l'espace avant cette virgule.Vous pouvez également le faire à l'aide de Haml du "trim espace" modificateur. L'insertion
>
après un Haml déclaration permettra d'éviter les espaces d'être ajoutées autour de lui:produit:
Cependant, comme vous pouvez le voir, le
>
modificateur également des bandes de l'espace devant le lien, la suppression de l'espace souhaité entre les paroles et le lien. Je n'ai pas trouvé un joli chemin autour de cela encore, sauf pour l'ajout d'
à la fin de "je vais d'abord", comme suit:Qui a finalement produit le résultat souhaité sans beaucoup de dur à lire interpolation:
ont une signification particulière pour elle, c'est pas ordinaire blanc, c'est insécable espace, ce qui signifie qu'au cours de word-habillage du navigateur ferais tout pour garder les mots à égalité avec
ensemble et ce n'est pas toujours ce que vous voulez. 
au lieu de
pour juste un simple espace.Bien, voici la solution, je suis à régler sur:
Helper
Vue
De cette façon, les espaces sont exclus par défaut, mais je peux toujours incluent explicitement avec un "\n" de ligne. (Il a besoin de la double barre oblique inverse parce que sinon, HAML l'interprète comme un retour à la ligne.) Laissez-moi savoir si il ya une meilleure option là-bas!
Vous pouvez utiliser le "aligator syntaxe" de HAML
http://haml.info/docs/yardoc/file.REFERENCE.html#whitespace_removal__and_
Une fois que l'approche que j'ai pris pour ce genre de chose est d'utiliser de la chaîne d'interpolation:
Je n'aime pas le look de la chaîne littérale dans l'interpolation, mais je l'ai utilisé avec auparavant déclaré chaînes ou générées dynamiquement les chaînes avant.
Vous pouvez faire pour garder leader de l'espace:
L'espace est dans les citations.
Pas très bien documenté, c'est proprement réalisé à l'aide de HAML les espaces de conservation (>) combiné avec un espace ASCII (& #32;), et non pas avec les aides:
Cela va produire ce que vous voulez:
Mais je suis d'accord, HAML doit trouver une meilleure façon de le faire, comme il le fait de rajouter des caractères ASCII à la page (mais il est encore plus efficace que l'utilisation d'aides).
Il y a un crochet "espaces grignotant" syntaxe, sinon écrire une méthode d'assistance pour elle.
Je suis tombé sur un problème similaire et j'ai trouvé ce donc j'ai pensé poster une autre solution qui ne nécessite pas une méthode d'aide. Utiliser Ruby interpolation #{} pour envelopper le lien et si les déclarations:
Cela fonctionne dans 3.0.18, il peut également fonctionner dans les versions antérieures.
.haml
fichier — le fait qu'il contient un lien et une virgule n'a pas vraiment d'indiquer quelque chose de toute façon.Encore une autre option que j'ai utilisé dans le passé:
Vous pouvez également toujours le faire:
La solution que j'ai obtenu de travail est:
Vous pouvez utiliser
=
, si=
est utilisé pour afficher le résultat de Rails de code, mais ici, il va le serveur le but.La préserver fonction a fonctionné pour moi
.white-space-pre= preserve "TEXT"