2011-04-06 9 views
7

article.contentフィルター:繊維?他のすべては多分それは宝石の問題だ正しくレンダリングなっている場合変数の内容をHamlフィルターに含める

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

出力

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

答えて

7

Hamlフィルターの内部では、文字列補間を使用してマークアップにRubyコードを組み込みます。たとえば:

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" 

編集:私の前の答えは私の欠陥検査によるコンテンツで改行、に関して誤解を招きました。上記のように、インクルードされたコンテンツの改行は直接細かく処理されます。

そのように、あなたのHAMLテンプレートは、単純に次のようになります:繊維もシングルラインのコンテンツを(独自の段落のラッパーを導入して、私は、あなたのマークアップを囲むあなたの%pタグを削除した

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

注意を)。

+0

@wizztjh私の答えは間違っていた。あなたが好きなように「うまくいく」べきであることを示す上記の更新された例を見てください。 – Phrogz

1

はあなたの構文は、罰金です。 RedClothをインストールしましたか?

編集:2番目の考えでは、2行目は何をしていますか? %article.postが適切なHAML構文であり、:繊維フィルターがその内部にあるとは思わないので、あなたの問題の原因かもしれません。

+0

私はredclothをインストールしました。エラーを表示させてください。 – wizztjh

+0

'%article.post'は'

+0

ええ、私はそれが気づいた、私の悪い。 – Quasar

関連する問題