2011-04-06 8 views
7

Jak wykonać filtrowanie article.content według: tekstyliów?W tym zawartość zmiennej w filtrze Haml

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

wyjście

<article class="post"> 
    <header>game</header> 
    <p> 
     </p><p>=article.content</p> 
    <p></p> 
    <footer></footer> 
    </article> 

Odpowiedz

7

W filtrze Haml używasz interpolacji String w celu włączenia kodu Ruby do Twojego znacznika. Na przykład:

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" 

Edycja: Moje poprzednie odpowiedź została mylące w odniesieniu do nowej linii w treści, z powodu mojej wadliwej testów. Jak pokazano powyżej, nowe wiersze w zawartej treści są obsługiwane bezpośrednio.

Jako taki szablon haml powinien po prostu wyglądać następująco:

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

pamiętać, że usunęliśmy Twojego %p tag otaczającą znaczników, jak Textile wprowadza własne owijarki akapitów (nawet dla zawartości pojedynczej linii).

+0

@wizztjh Moja odpowiedź była błędna; zobacz zaktualizowany przykład powyżej, pokazujący, że powinien "po prostu działać", jak chcesz. – Phrogz

1

Twój składnia wydaje się w porządku, jeśli wszystko inne jest uzyskiwanie renderowane prawidłowo może to kwestia gem. Czy masz zainstalowany RedCloth?

Edycja: Zastanawiasz się, co robi druga linia? Może to być przyczyną twojego problemu, ponieważ nie uważam, że% article.post jest poprawną składnią HAML i: filtr tekstylny jest w środku

+0

Mam zainstalowany redcloth, pozwól mi pokazać błąd – wizztjh

+0

Myślę, że '% article.post' generuje'

+0

Tak, zauważyłem to, moje złe. – Quasar