2009-06-18 10 views
30

Ich habe QuestionController Ich habe jetzt AnotherQuestionController mit Aktionen, die mit Vorlagen und Partials in app/views/question/ Rendern Rendern sollte das möglich? Scheint so, als müsste es sein.Ein Controller-Rendering mit anderen Controller-Ansichten

Ich habe versucht

render :template => "question/answer" 

aber answer.html.erb enthält partials und ich bekomme Fehler wie

"Fehlende Vorlage another_question/_my_partial.erb im Blick Weg"

So ist gibt es eine Möglichkeit, Rails zu sagen, "behandle AnotherQuestionController so, als wäre es sein QuestionController und suche nach Sichten und Partials in app/views/question"? Oder muss ich app/views/another_question erstellen - was zu einer Duplizierung führt (dies kann nicht der Weg von Rails sein).

Dank

Antwort

44

Template-Rendering funktionieren soll eigentlich

render :template => "question/answer" 

Das Problem, das Sie von dem partials mit wurden, ist an der falschen Stelle suchen. Die Lösung ist einfach, machen Sie Ihre Partials in allen freigegebenen Vorlagen absolut. Zum Beispiel die Frage/answer.html.erb sollte

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

statt der üblichen

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

Das hat nicht funktioniert Ich habe Angst – Paul

+0

oh Recht. Bei der zweiten Untersuchung habe ich die eigentliche Ausgabe gefunden –

+0

Jede neue Möglichkeit, dies in Schienen 3.x zu tun? Ich frage, weil ich einen Edelstein verwende, der Helfern das Rendering in der Ansicht automatisch ermöglicht (andernfalls würde Ihre Lösung funktionieren). Ich würde die Helfer dieses Edelsteins lieber nicht überschreiben. Vielen Dank! – montrealmike

0

Sie haben die inherit_views Plugin versuchen könnte (http://github.com/ianwhite/inherit_views/tree/master) erwähnte ich hier in der Antwort auf this question.

+0

Danke, ich werde das untersuchen. Scheint wie eine Menge Arbeit, tut es aber nicht. Ich hätte gedacht, dass render() Optionen verwendet hätte, um die Ansichten/Teiltöne eines anderen Controllers festzulegen. Ah, gut. – Paul

12

Sie können es erreichen mit:

render 'question/answer' 
+0

Wird dies auch alle before_actions in diesem Controller auslösen? – Dahnny012