2011-04-01 5 views
0

J'utilise une gemme qui ajoute un moteur à mon application Rails avec des routes qui rendent toutes des fragments de code html en utilisant la disposition d'application par défaut. Je veux que le contrôleur de cette gemme utilise une disposition différente. Est-il possible que je puisse ajouter du code à un initialiseur qui provoquera dynamiquement un contrôleur dans un gem pour toujours utiliser une mise en page. Par exemple. puis-je lancer quelque chose comme le code suivant (qui ne fonctionne pas) dans un initialiseur en supposant que la définition complète de SampleController est définie dans la gemme que j'utilise?Rails outrepasser la disposition du contrôleur dans la gem

class SampleController 
    layout 'my_layout' 
end 

Je sais que vous pouvez appeler ou class_evalinstance_eval pour les méthodes de classe et d'instance, mais comment remplacer ce type de code d'initialisation?

+0

Vous n'avez pas besoin de faire un travail de eval classe ou une instance pour cela. Votre moteur devrait automatiquement pousser votre répertoire de mise en page du moteur sur la pile des chemins d'accès. Assurez-vous simplement que la configuration de votre moteur spécifie le répertoire correctement (notez que si vous spécifiez un chemin indépendamment, vous devez les spécifier tous). – coreyward

Répondre

1

Si vous créez un 'sample.html.haml' (ou n'importe quel langage de modèle) dans votre répertoire Layouts, il sera utilisé à la place d'application.html pour SampleController.

http://guides.rubyonrails.org/layouts_and_rendering.html#finding-layouts

+0

Bonne idée, sauf que la mise en page alternative que je veux utiliser existe déjà et est nommée autre chose. Si je ne peux pas penser à autre chose, je pourrais le copier dans "sample.html.haml" et accepter cette réponse. Merci. –

Questions connexes