2010-04-07 8 views
3

Je ne sais pas quelle est la meilleure façon de procéder.Rails Layout Rendu avec condition de contrôleur

Sur mon application.html.erb, je définis un div en-tête.

Mon contrôleur par défaut (root) est un contrôleur de page d'accueil. Et je souhaite que si je suis à l'index de la page d'accueil, l'en-tête restitue avec du contenu, mais tous les autres contrôleurs rendent un autre contenu à l'intérieur de cet en-tête.

Comment puis-je créer une condition dans ce div en-tête pour afficher un contenu différent en fonction du contrôleur affiché?

Répondre

6

Vous pouvez utiliser l'assistant content_for pour définir un bloc de balisage dans les modèles d'affichage individuels générés à partir de la mise en page de l'application.

application.html.erb:

<div id="header"> 
    <%= yield :header %> 
</div> 

comprennent alors le code comme celui-ci ne importe où dans le modèle de vue d'un contrôleur:

<% content_for :header do %> 
    This is a controller-specific header. 
<% end %> 

Notez que vous pouvez définir autant de ces blocs que vous comme, de sorte que vous pourriez avoir une barre latérale conditionnelle, etc.