2009-06-18 10 views
30

J'ai QuestionController J'ai maintenant AnotherQuestionController avec des actions qui devraient rendre en utilisant des modèles et des partiels dans app/views/question/ Est-ce possible? On dirait que ça devrait l'être.Un contrôleur rendu en utilisant les vues d'un autre contrôleur

J'ai essayé

render :template => "question/answer" 

mais answer.html.erb comprend et je reçois partials erreurs comme

"Missing another_question/_my_partial.erb modèle dans le chemin de vue"

Ainsi est là un moyen de dire à Rails "traiter AnotherQuestionController comme si son QuestionController et chercher des vues et des partiels dans app/views/question"? Ou devrais-je créer app/views/another_question - ce qui entraînera la duplication (cela ne peut pas être le moyen Rails).

Merci

Répondre

44

Modèle rendu devrait effectivement travailler

render :template => "question/answer" 

Le problème que vous rencontrez est des partials regardant dans le mauvais endroit. Le correctif est simple, il suffit de rendre vos partiels absolus dans tous les modèles partagés. Par exemple, la question/answer.html.erb devrait avoir

<%= render :partial => 'question/some_partial' %> 

plutôt que l'habituel

<%= render :partial => 'some_partial' %> 
+0

Cela ne fonctionne pas, je crains – Paul

+0

oh droit. Sur le deuxième examen, j'ai trouvé le numéro réel –

+0

Toute nouvelle façon de le faire dans les rails 3.x? Je demande parce que j'utilise une gemme qui permet aux assistants de faire automatiquement le rendu dans la vue (sinon votre solution fonctionnerait). Je préfère ne pas écraser les aides de cette gemme. Merci! – montrealmike

0

Vous pouvez essayer le plugin inherit_views (http://github.com/ianwhite/inherit_views/tree/master) je l'ai mentionné ici dans la réponse à this question.

+0

Merci, je vais regarder dans cela. On dirait qu'il y a beaucoup de travail, n'est-ce pas? J'aurais pensé que render() aurait pris des options permettant de spécifier les vues/partiels d'un autre contrôleur. Et bien. – Paul

12

Vous pouvez y arriver avec:

render 'question/answer' 
+0

Est-ce que cela déclenchera également toutes les before_actions dans ce contrôleur? – Dahnny012

Questions connexes