Rails 3, le rendu de l'action à partir d'un autre contrôleur
J'ai besoin de rendre un autre contrôleur de l'action <%= render "controller/index" %>
et j'ai cette erreur
Manquant partielle contrôleur/index avec {:formats=> [html], :locale=>[:fr, :fr], :handlers=>[:rjs, :rhtml, :rxml, :erb, :builder]} dans les chemins de vue "/path_to/app/views"
comment puis-je rendre un autre contrôleur de l'action dans la vue, mais sans envoyer une redirection au client ?
J'ai essayé
<%=render :action => "index", :controller=>"controller" %>
mais il me semble que n'est pas de travail.
- avez-vous un
index.html.erb
dansviews/your_controller/
? - Pourquoi ne pas utiliser une redirection vers la bonne action du contrôleur?
- Parce que la logique de l'action peut être totalement différent, et la seule chose commune entre ces actions est la vue.
Vous devez vous connecter pour publier un commentaire.
Essayez de modèle de rendu:
Ou fichier:
Et je crois que vous devriez vous rendre contrôleur, quant à elle, est plus pratique:
Cela fonctionne bien pour moi :
puis, appel par
fondamentalement, il hacks les autres classe et écrase son "params" méthode et retour
Si vous êtes à l'aide de Rails 4:
c.process_action(action)
pour obtenir monbefore_actions
à feu.De Rails Guides page:
Donc en bref, vous ne pouvez pas rendre une autre action, vous ne pouvez rendre un autre modèle. Vous pouvez obtenir le code partagé et le déplacer vers une méthode dans l'application du contrôleur. Vous pouvez également essayer quelque chose le long de ces lignes si vous ne pouvez vraiment pas la structure de votre code d'une autre façon:
Si vous ne voulez pas juste pour rendre les
view
de l'autre contrôleur (modèle), mais l'appel de laaction
(méthode de), penser plus ruby le mode de vie - mettre cette méthode(s) dans unmodule
et l'inclure dans les contrôleurs vous en avez besoin.Je pense que c'est moins "effrayant", puis en quelque sorte de toucher un autre contrôleur.