2010-07-04 4 views
4

En haml, comment puis-je rendre le suivant HTML incroyablement base:comment créer un élément fort dans un p

<p>Results found for <strong>search term</strong> 

où « terme de recherche » est en fait une variable Ruby appelée @query?

J'essaie ce qui suit,

%p results found for <strong>= @query</strong> 

Mais qui rend = @query littéralement. Si j'essaie:

%p results found for <strong> 
= @query 
</strong> 

puis le terme de la requête s'affiche correctement, mais sur une nouvelle ligne.

Aussi, je me demande s'il y a une meilleure façon de rendre <strong> dans haml, tout en gardant tout sur la même ligne.

Je connais le haml documentation, mais pour autant que je puisse voir, il n'y a pas d'exemple d'utilisation d'une simple variable Ruby en ligne.

----- ------- MISE A JOUR

Le code suivant fonctionne, et montre comment utiliser une variable qui est pas dans les balises:

%p 
    = @trials_found_count 
    results found for 
    %strong= @query 

Mais je trouve vraiment illisible - il est difficile de dire qu'il rend juste une ligne de HTML sans ajouter un commentaire ci-dessus.

Y at-il un moyen que je peux mettre tout ce code sur une seule ligne? Ou est-ce juste comment ça marche?

Répondre

5

HAML est délimité par des espaces. Les balises imbriquées vont sur la ligne ci-dessous et un niveau à partir de l'étiquette ci-dessus. Ruby incorporé à partir duquel vous voulez afficher la sortie est ouvert avec un '='. Ruby incorporé que vous ne voulez pas afficher tel que le début des boucles utilise '-'. Ces valeurs sont équivalentes à <% =%> et%%> respectivement dans erb.

Qu'est-ce que vous voulez ressemblerait à ceci:

%p 
    results found for 
    %strong= @query 

qui produirait le code html:

<p>results found for <strong>@query</strong></p> 

Il convient de noter que le « = » pour commencer l'évaluation Ruby ne peut venir à la début de la ligne ou après une déclaration d'étiquette et qu'une seule déclaration d'étiquette peut apparaître par ligne. La section d'évaluation Ruby de la référence que vous lié couvertures intégrés Ruby en détail et le tutoriel haml qui couvre Ruby embarqué et bien d'autres bases de HAML est ici:
http://haml-lang.com/tutorial.html

+0

Je ne peux pas commenter la réponse ci-dessous pour une raison quelconque. Réputation? Quoi qu'il en soit, haml restitue le saut de ligne entre les balises en tant qu'espace en html. Au moins, il l'a fait dans tous les modèles haml que j'ai jamais fait ~ 50 ou plus. – nuclearsandwich

+0

Étant donné que la balise de paragraphe comporte plusieurs lignes, vous ne pouvez rien ajouter d'autre sur la même ligne. Donc, "résultats trouvés pour" doit être sur la ligne suivante. En outre, dans les versions plus anciennes, l'indentation devait être exactement 2 espaces (% fort est à 3). Cela ne semble plus être le cas, mais si tout le reste est de deux espaces, il sera toujours contrarié par l'indentation incohérente. Voici un exemple qui fonctionne pour moi http://gist.github.com/463507 –

+0

Merci! Que faire si je veux faire% p [NUM_RESULTS] résultats trouvés pour - où NUM_RESULTS est une variable? Dois-je le mettre sur une nouvelle ligne aussi? Avoir lu un tutoriel, mais vraiment trouver difficile de me faire la tête. – AP257

1

Je ne suis pas sûr, mais vous pourriez avoir besoin d'un non l'espace pour préserver l'fermeture de contact espace entre le pour et <strong>

%p results found for&nbsp; 
    %strong= @query 
4

Voici comment je le ferais:

%p No results found for <strong>#{h @query}</strong> 
Questions connexes