2010-04-26 6 views
4

Je suis nouveau à haml, donc j'essaie toujours de comprendre la mise en forme.Haml formatage

J'ai un fichier index.haml avec le code suivant.

%h1 
    Welcome to Solidarity 

Hello, 
= @profile.first_name 
! 

Il rend comme ceci:

Bienvenue à la solidarité
Bonjour, l'utilisateur!

est ici la source de la page:

<h1> 
    Welcome to Solidarity 
</h1> 
Hello, 
frances 
! 

Il a un espace entre @ profile.first_name et le point d'exclamation. Pourquoi donc? Et, comment puis-je le réparer?

Répondre

5
%h1 Welcome to Solidarity 
Hello, #{@profile.first_name}! 
Please #{link_to 'post a comment', new_comment_path}! 

devient

<h1>Welcome to Solidarity</h1> 
Hello, John! 
Please <a href="/comments/new">post a comment</a>! 

S'il vous plaît garder à l'esprit que, dans Rails 2 et Haml 2, vous devez bien quoi que ce soit html échapper que vous envoyez au navigateur (ht NEX3):

Hello, #{h @profile.first_name}! 

Dans Rails 3 et Haml 3, tout est échappé par défaut, donc vous pouvez simplement faire:

Hello, #{@profile.first_name}! 
+0

Merci! De même, les appels link_to ont l'espace supplémentaire à la fin. Comment devraient-ils être résolus? – user5243421

+1

J'ai édité ma réponse pour ajouter un exemple de 'link_to'. – yfeldblum

+1

N'oubliez pas de HTML-échapper le nom d'utilisateur! –

5

Vous pouvez également utiliser "alligators" pour "manger" l'espace blanc avant ou après une étiquette. De l'haml-lang docs:

%img 
%pre>< 
    foo 
    bar 
%img 

est compilé à:

<img /><pre>foo 
bar</pre><img /> 

Bien que cela aurait aussi résolu votre problème ici, la solution donnée par le juge est le balisage approprié pour ce scénario. Je pensais juste que je le mentionnerais.