2010-09-24 18 views
32

in HTML, si può fare qualcosa di similetag inline in 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> 

E 'bello, perché il paragrafo di testo appare ancora come un paragrafo nel codice. In haml, sembra che questo sia

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

C'è un modo per inserire completamente un tag in haml?

+5

Mi piace come la SO hilighter semplicemente non sa cosa fare con quel blocco di Haml –

+0

Questo sarebbe un buon richiesta di funzionalità. Quello che vogliamo veramente scrivere è qualcosa del tipo: '% p I% em {amore} tu'. –

+0

possibile duplicato di [Elementi di Haml multipli sulla stessa riga] (http://stackoverflow.com/questions/2437168/multiple-haml -elements-on-same-line) –

risposta

56

Haml eccelle per il markup strutturale, ma non è realmente inteso per il markup in linea. Leggi: Haml Sucks for Content. Basta mettere i tag in linea in formato HTML:

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

Oppure utilizzare un filter:!

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

Pensavo che potesse essere così, volevo solo assicurarmi che non mi mancasse nulla. Usare markdown per quel tipo di contenuto è in realtà una grande idea anche –

+0

La nuova versione di haml risolve questo problema. Ora puoi scrivere ad esempio:% h1 title di pagina. Dalla [documentazione di haml] (http://haml.info/docs/yardoc/file.REFERENCE.html): si noti che i tag HTML vengono passati anche non modificati. Se hai un codice HTML che non vuoi convertire in Haml, o stai convertendo un file riga per riga, puoi semplicemente includerlo così com'è. – Simonini

9

È possibile Inline HTML in qualsiasi HAML fare

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

L'operatore = significa che qualsiasi cosa il lato destro restituisce che verrà emesso.

18

So che questo è vecchio. Ma ho pensato di postare questo nel caso qualcuno dovesse atterrare qui. Puoi anche fare questo genere di cose in haml (e forse più che cosa l'OP stava cercando?).

%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 per quelle situazioni in cui farlo su più righe aggiunge spazi non si vuole OSSIA Quando hai un link alla fine di una frase, e non vuoi quello stupido spazio tra il link e il punto. (O come nell'esempio del PO, ci sarebbe uno spazio tra la e la virgola.

Basta non prendere la mano come ho fatto nell'esempio :)

+0

Cosa succede se voglio aggiungere una classe a una span? Mi piace .red – chrisjlee

+0

Sarebbe così: # {content_tag (: em, "emphasize!", Class: "red")} –

+0

Grazie! Questo era esattamente quello che stavo cercando :) – DavidVII

3

come un ibrido di queste belle risposte da altri, penso che tu possa definire un metodo di supporto nel tuo application_helper.rb per alcuni markup in linea che useresti spesso. Non hai bisogno di mescolare HTML con HAML, né devi digitare molto.

Nel tuo aiuto;

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

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

Nel vostro indirizzo;

 
%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

E 'tutta una questione di rientro:

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