2010-12-07 8 views
0

私のアプリケーションのレイアウトが似ていると言うのがあります。私のapplication_layoutにセクションを定義したいのですが、特定のケースでオーバーライドすることは可能でしょうか?

についてのページで今すぐ
<div id=container> 

<div id=content> 
<%= yield %> 
</div> 
</div id=sidebar> 
    <div id=top></div> 
    <div id=bottom></div> 
</div> 
  1. 、私はこれを行うことができるか、サイドバーのセクションを非表示にしたいですか?
  2. 連絡先ページで、サイドバーの下部の内容を上書きしたいのですか?それは可能ですか?
  3. あなたについてのアクションで

答えて

1
あなたapplication_controller.rbで

before_filter :enable_sidebar 
def enable_sidebar 
    @show_sidebar = true 
end 

:あなたのレイアウトでは

def about 
    @show_sidebar = false 
end 

<% if @show_sidebar %> 
    <div id="sidebar"> 
    ... 
    </div> 
<% end %> 

は、あなたの連絡先のページのための同様のアプローチを使用しますか、異なるサイドバーのバリエーションを選択するにはブール値ではなくシンボル値を使用する。アイデアは同じです:デフォルトを設定し、いくつかのコントローラーインスタンス変数を、アクション単位で必要に応じて変更するように設定します。

+0

content_forを使用してこれを行う方法はありますか? – Blankman

関連する問題