2010-09-24 7 views
32

en html, vous pouvez faire quelque chose comme çatag en ligne dans haml

<p> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
    aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
    <em>Etiam nec nisi lorem</em>, ac venenatis ipsum. In sollicitudin, 
    lectus eget varius tincidunt, felis sapien porta eros, non 
    pellentesque dui quam vitae tellus. 
</p> 

Il est agréable, parce que le paragraphe de texte ressemble toujours à un paragraphe dans le balisage. En haml, il ressemble à ceci:

 
%p 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
    aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
    %em Etiam nec nisi lorem 
    , ac venenatis ipsum. In sollicitudin, 
    lectus eget varius tincidunt, felis sapien porta eros, non 
    pellentesque dui quam vitae tellus. 

Existe-t-il un moyen d'intégrer totalement un tag dans haml?

+5

J'aime comment le juste ne SO Hilighter sait pas quoi faire avec ce bloc de haml –

+0

Cela ferait une bonne demande de fonctionnalité. Ce que nous voulons vraiment écrire est quelque chose comme: '% p I% em {love} vous. ' –

+0

duplication possible de [plusieurs éléments Haml sur la même ligne] (http://stackoverflow.com/questions/2437168/multiple-haml -elements-on-same-line) –

Répondre

56

Haml excelle pour le balisage structurel, mais ce n'est pas vraiment prévu pour le balisage en ligne. Lire: Haml Sucks for Content. Il suffit de mettre vos balises en ligne HTML:

.content 
    %p 
    Lorem ipsum <em>dolor</em> sit amet. 

Ou bien utiliser un filter:

.content 
    :markdown 
    Lorem ipsum *dolor* sit amet. 
+1

Je pensais que c'était peut-être ça, je voulais juste m'assurer que je ne manquais de rien. Utiliser la démarque pour ce genre de contenu est vraiment une très bonne idée aussi –

+0

La nouvelle version de haml a résolu ce problème. Maintenant, vous pouvez écrire par exemple:% h1 titre de la page. À partir de [documentation of haml] (http://haml.info/docs/yardoc/file.REFERENCE.html): Notez que les balises HTML sont également transmises sans être modifiées. Si vous avez un code HTML que vous ne voulez pas convertir en Haml, ou si vous convertissez un fichier ligne par ligne, vous pouvez simplement l'inclure tel quel. – Simonini

9

Vous pouvez Inline HTML dans toute HAML faire

%p!= "Lorem ipsum <em>dolor</em> sit amet" 

L'opérateur = signifie que tout le côté droit retourne, il sera sorti.

18

Je sais que c'est vieux. Mais je pensais que je posterais ceci au cas où quelqu'un débarquerait ici. Vous pouvez aussi faire ce genre de chose dans haml (Et peut-être plus ce que le PO recherchait?).

%p Here is some text I want to #{content_tag(:em, "emphasize!")}, and here the word #{content_tag(:strong, "BOLD")} is in bold. and #{link_to("click here", "url")} for a link. 

utiles pour les situations où le faire sur plusieurs lignes ajoute des espaces que vous ne voulez pas I.E. Lorsque vous avez un lien à la fin d'une phrase, et ne voulez pas cet espace stupide entre le lien et la période. (Ou comme dans l'exemple de l'OP, il y aurait un espace entre le et la virgule.

Il suffit de ne s'emballer pas comme je l'ai fait dans l'exemple :)

+0

Et si je veux ajouter une classe à une plage? Comme .red – chrisjlee

+0

Ce serait comme ça: # {content_tag (: em, "souligner!", Classe: "rouge")} –

+0

Merci! C'était exactement ce que je cherchais :) – DavidVII

3

Comme un hybride de ces belles réponses par D'autres, je pense que vous pouvez définir une méthode d'assistance dans votre application_helper.rb pour certaines annotations en ligne que vous utiliseriez fréquemment. Vous n'avez pas besoin de mélanger HTML avec HAML, ni de taper beaucoup.

Dans votre aide;

def em(text) 
    content_tag(:em, text) 
end 

#def em(text) 
# "<em>#{text}</em>".html_safe 
#end 

Dans votre haml;

 
%p 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
    aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
    #{em 'Etiam nec nisi lorem'}, ac venenatis ipsum. In sollicitudin, 
    lectus eget varius tincidunt, felis sapien porta eros, non 
    pellentesque dui quam vitae tellus. 
0

Il est tout au sujet de l'indentation:

%p 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 

    %em 
    Etiam nec nisi lorem, ac venenatis ipsum. In sollicitudin, lectus eget varius tincidunt, felis sapien porta eros, non pellentesque dui quam vitae tellus.