Railsのビューのrenderメソッドにはブロックが渡せるんですね
Railsで作っているウェブアプリの一部ページにサイドバーを載せたいなと思いました。それでいろいろ調べてたら、ビューのrenderメソッドにブロックが渡せることを知ったので、これを使うことにしました。
環境
- Ruby 1.9.2
- Ruby on Rails 3.0.3
- Haml 3.1.0.alpha.147
書き方
まずサイドバーをあらわす_sidebar.html.hamlを用意します。
_sidebar.html.haml
%aside = yield
そしてサイドバーを呼び出したいビュー(ここではsomething.html.haml)を以下のように書きます。
something.html.haml
%article %h1 Tシャツ = render :layout => 'sidebar' do %ul %li ハイテク %li NEO
something.html.hamlのページを開くとこんな感じのHTMLになります。
<article> <h1>Tシャツ</h1> </article> <aside> <ul> <li>ハイテク</li> <li>NEO</li> </ul> </aside>
ソースコードを見る限り、ブロックを渡すときは:partialではなく:layoutでないといけないみたいです。