2011-07-21 21 views
7

私は、ヘルパーを介してcontent_forブロックの結果をレンダリングしようとしています。ヘルパーのcontent_forブロックのレンダリング

私はテンプレート(HAML)、レイアウト、次のようにあります。

# app/views/books/show.html.haml 
-content_for(:page_header) do 
    %h1= @book.title 

# app/views/application.html.haml 
... 
=yield(:page_header) 
... 

絶対に正常に動作します。

私がしたいことは、代わりにヘルパーでその呼び出しを行うことです。だから私は、次を目指しています:

# app/views/books/show.html.haml 
-content_for(:page_header) do 
    %h1= @book.title 

# app/views/application.html.haml 
.... 
=page_header(block) 
.... 

# app/helpers/application.rb 
.... 
def page_header(&block) 

    # Some view logic 
    # ... 

    =yield(:page_header) 
end 
.... 

私はヘルパーを呼び出すことにより、部分的な結果を達成することができます

# app/views/application.html.haml 
=page_header { yield(:page_header) } 

# app/helpers/application.rb 
def page_header(&block) 
    yield 
end 

が、それは私には醜い感じています。

アイデア?前もって感謝します。

回答:再度content_for(:page_header)を使用してレンダリングしてください。

答えて

関連する問題