2010-09-15 4 views
3

Il semble que ces aides dans app/helpers/foo.rb peuvent être utilisées dans View, mais ne peuvent pas être utilisées dans Controller?Dans Rails, est-il possible d'utiliser les méthodes app/helpers/foo.rb dans Controller vs in View?

Dans certains cas, différents contrôleurs peuvent utiliser la même méthode mais passer simplement un paramètre différent, alors dans ce cas, est-ce que cela n'a pas de sens d'utiliser un assistant dans un contrôleur?

Répondre

1

Cela peut sembler logique, mais cela ne fonctionne pas de cette façon. (Si quelqu'un sait comment faire cela, n'hésitez pas à poster)

Vous pouvez mettre des aides communs dans ApplicationController, ils seront accessibles à partir de n'importe quel contrôleur de votre application.

3

Il existe deux façons principales de réutiliser le code entre les contrôleurs.

Vous pouvez créer une sous-classe de ApplicationController dans laquelle le code commun est défini, puis vos contrôleurs qui souhaitent partager le code hérité de la nouvelle classe de contrôleurs. (Ou ajoutez simplement le code à ApplicationController lui-même s'il doit être partagé par tous les contrôleurs.)

Vous pouvez également créer vos propres modules (ce sont tous les assistants sont essentiellement) et les inclure dans les contrôleurs que vous voulez Comme les helpers ne sont que des modules, vous pouvez inclure une aide dans votre contrôleur, mais les helpers sont plus pour la couche View que pour le contrôleur. Il est donc rarement l'endroit pour partager du code entre contrôleurs.

1

Comme mentionné ci-dessus, vous pouvez placer des aides communes dans ApplicationController ou une sous-classe. Je voudrais ajouter que pour les mettre à la disposition des vues aussi bien, que vous mettez au sommet de la classe:

helper_method :foo 
+0

Salut Lin, Comme Tim a dit que vous pouvez les mettre dans le contrôleur et définir comme méthodes d'assistance Ex: ApplicationController < ActionController :: Base helper_method: foo fin – sameera207

Questions connexes