2009-10-26 9 views
0

Disons que j'ai des contrôleurs Apple et Bees, et de nouvelles actions dans les deux. Dans la nouvelle action de Bee, j'ai mis quelques variables à afficher dans 'abeilles/nouveau'. Il se trouve que je souhaite également rendre ce même modèle à partir de la nouvelle méthode d'Apple. Quelle est la bonne façon de configurer les variables dans ce cas? Je suppose que copier les devoirs de Bees n'est pas la bonne façon de procéder.Afficher la vue depuis un autre contrôleur

Répondre

0

Si vous souhaitez l'afficher à plusieurs endroits, le mieux est d'utiliser un partiel. Vous pouvez déplacer tout le code de vue pertinent dans un partiel (appelons-le "apples_new", ce qui signifie que vous l'enregistrerez sous /app/views/apples/_apples_new.html.erb).

Puis, dans vos pommes régulières/new.html.erb voir, vous pouvez simplement appeler partielle:

<!-- /app/views/apples/new.html.erb --> 
<h1>Apples New</h1> 
<%= render :partial => "apples_new" %> 

Et dans vos abeilles "nouvelle" vue, vous pouvez le faire:

<!-- /app/views/bees/new.html.erb --> 
<h1>Bees New</h1> 
<% if @bees.has_apples? $> 
    <%= render :partial => "apples/apples_new" %> 
<% end %> 

Notez que dans mon exemple ci-dessus, j'ajoute de la logique. Je suppose que vous voulez seulement appeler la même forme dans certains scénarios, alors j'ai ajouté le "has_apples?" méthode pour démontrer la logique.

0

Note rapide: vous pouvez également compresser cette logique en une seule ligne:

"pommes/apples_new" si @ bees.has_apples? %>
Questions connexes