2011-04-06 5 views

risposta

7

All'interno di un filtro Haml si utilizza l'interpolazione String per includere il codice Ruby nel markup. Per esempio:

require 'haml'        
@x = 42            
Haml::Engine.new("%p= @x").render(self)    #=> "<p>42</p>\n" 
Haml::Engine.new(":textile\n\t= @x").render(self) #=> "<p>= @x</p>\n" 
Haml::Engine.new(":textile\n\t\#{@x}").render(self) #=> "<p>42</p>\n" 

@content = "alpha\n\n#hi **mom**" 
Haml::Engine.new(":textile\n\t\#{@content}").render(self) 
#=> "<p>alpha</p>\n<p>#hi <b>mom</b></p>\n" 

Edit: La mia risposta precedente era fuorviante rispetto ai ritorni a capo nel contenuto, a causa della mia prova viziata. Come visto sopra, le nuove righe nel contenuto incluso vengono gestite direttamente.

Come tale, il modello Haml dovrebbe semplicemente simile a questa:

- @articles.each do |article| 
    %article.post 
    %header=article.name 
    :textile 
     #{article.content} 
    %footer 

Si noti che ho rimosso il tuo %p tag che circonda il vostro margine di profitto, in quanto introduce tessile propri comma wrapper (anche per i contenuti a riga singola).

+0

@wizztjh La mia risposta era sbagliata; si prega di vedere l'esempio aggiornato sopra che mostra che dovrebbe "funzionare" a piacere. – Phrogz

1

la sintassi sembra che vada bene, se tutto il resto è sempre reso correttamente forse è un problema di gemma. Hai installato RedCloth?

Modifica: A pensarci bene, cosa fa la seconda linea? Potrebbe essere la causa del tuo problema dal momento che non penso che% article.post sia la sintassi HAML corretta e il filtro: fabric è al suo interno

+0

Ho installato redcloth, mi permetta di mostrare l'errore – wizztjh

+0

Penso che '% article.post' genera'

+0

Sì, l'ho notato, mio ​​cattivo. – Quasar

Problemi correlati