2009-09-21 9 views
2

Je suis nouveau à Ruby on Rails et je suis sûr que cette question est assez stupide, mais je ne peux pas déduire la réponse des exemples que j'ai vus, peut-être que je n'en ai pas vu beaucoup de bons.Contrôleur pour la page d'accueil?

Un site web sur lequel je travaille aura des 'boîtes' (widgets) dans une barre latérale qui contiendra du contenu dynamique, et il aura également des liens sur l'autre barre latérale vers des sections du site qui seront traitées par différents contrôleurs. La mise en page/style du site web restera le même dans tous les contrôleurs. Par exemple, si je clique sur un lien, le contenu du centre changera, mais le reste de la conception et de la mise en page du site resteront les mêmes. Ma question est de savoir si je devrais créer quelque chose comme un contrôleur home qui va gérer la page d'accueil et la mise en page du site, puis céder à la disposition d'un contrôleur spécifique s'il est invoqué, puis spécifier ce contrôleur comme contrôleur racine routes.rb? Je me demande simplement comment je pourrais spécifier que la mise en page devrait rester relativement la même, de sorte que je ne devrais pas être redondant et coller le même code de mise en page pour chaque contrôleur. C'est ce que quelqu'un sur IRC a recommandé, pour créer un contrôleur home, mais je voulais savoir si c'était la façon normale de faire les choses. La réponse pourrait être vraiment simple pour tout le monde, mais comme je suis nouveau sur les rails, je suis inconscient.

Je ne sais pas vraiment comment formuler ma question correctement puisque je suis relativement nouveau sur les rails. Si quelque chose n'a pas de sens s'il vous plaît faites le moi savoir et je vais essayer de clarifier.

Merci.

Répondre

3

Oui, vous pouvez utiliser un paramètre page_controller pour cela et le définir comme l'URL racine dans routes.rb. N'oubliez pas que vous n'avez pas besoin d'utiliser un fichier de disposition distinct pour chaque contrôleur si vous ne le souhaitez pas. Si vous créez un fichier dans Layouts/application.html.erb, il sera utilisé dans toute l'application. Vous pouvez l'ignorer en créant d'autres mises en page qui sont nommées en fonction du contrôleur qui seront automatiquement récupérées ou en définissant la mise en page: other_name dans votre contrôleur pour le modifier.

+0

C'est exactement ce que je voulais savoir (Merci à JRL aussi, vous surpasser les deux). Alors, dans le contenu div, qui changerait en fonction du contrôleur de mon application, comment afficher le contenu basé sur le contrôleur? Est-ce que je créerais une vue pour le contrôleur et le rendrait alors partiel dans le contenu div? Faites-moi savoir si je n'ai aucun sens heh. –

+0

Je viens de voir un exemple de application.html.erb et ils ont utilisé la directive yield. Cela répond à ma question, merci! –

1

Si vous créez le fichier application.html.erb dans votre dossier Layouts, il sera utilisé par défaut par tout contrôleur ne disposant pas de fichier de disposition correspondant dans le dossier layouts. En outre, vous pouvez spécifier manuellement la disposition à utiliser dans un contrôleur en ajoutant:

layout "your_layout_name" 

dans votre contrôleur.

+0

Merci JRL. Si vous pouvez élargir votre réponse pour répondre à mon commentaire à Andrew, je l'apprécierais. –

+0

(Désolé d'être redondant) Je viens de voir un exemple de application.html.erb et ils ont utilisé la directive yield. Cela répond à ma question, merci! –

Questions connexes