web-dev-qa-db-fra.com

étiquette inline dans haml

En HTML, vous pouvez faire quelque chose comme ça

<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>

C'est bien, car le paragraphe du texte ressemble toujours à un paragraphe dans le balisage. À Haml, ça ressemble à ceci

[.____]% p 
 Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing Elit. Praesent Eaget 
 Aliquet Odio. FUSCE ID Quam UE Augue Augue Sollicitudin Impordiet UE AC Eros. [.____]% em Em eiam nec nisi lorem [.____], AC Venenatist Ipsum. En Sollictudin, [.____] Lectus Eget Varius TinCidunt, Felis Sapien Porta Eros, non [.____] Pellenteque Dui Quam Vitae Tellus. 

Y a-t-il un moyen de mettre totalement en ligne une étiquette dans HAML?

37
Matt Briggs

Haml excelle pour un balisage structurel, mais ce n'est pas vraiment destiné au marquage en ligne. Lire: Haml suce pour le conten . Il suffit de mettre vos étiquettes inline comme HTML:

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

Ou bien utiliser A filtre :

.content
  :markdown
    Lorem ipsum *dolor* sit amet.
65
Andrew Vit

Je sais que c'est vieux. Mais pensais que je posterais ceci au cas où quelqu'un atterrit ici. Vous pouvez également faire ce genre de chose à Haml (et peut-être plus ce que l'OP cherchait?).

%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.

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

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

21
Skäggiga Mannen

Vous pouvez en ligne HTML dans n'importe quel hame

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

L'opérateur! = Signifie que, quel que soit le côté droit, il sera émis.

9
Rafa de Castro

En tant que 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 certains marquages ​​en ligne, vous utiliseriez fréquemment. Vous n'avez pas besoin de mélanger HTML avec HAML, vous ne devez pas taper beaucoup.

Dans votre aide;

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

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

Dans votre hame;

[.____]% p 
 Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing Elit. Praesent Eaget 
 Aliquet Odio. FUSCE ID Quam UE Augue Augue Sollicitudin Impordiet UE AC Eros. [.____] # {em 'eiam nec nisi lorem'}, AC Venenatis Ipsum. En Sollictudin, [.____] Lectus Eget Varius TinCidunt, Felis Sapien Porta Eros, non [.____] Pellenteque Dui Quam Vitae Tellus. 
4
Quv

Tout est question d'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. 
0
drjorgepolanco