2010-06-17 6 views
16

Comment configurer une méthode que je veux accessible depuis tous les contrôleurs?Ruby on Rails: méthode Global Helper pour tous les contrôleurs

la méthode Tirer application_helper juste le rend disponible aux vues

+0

est un autre exemple ici: http://stackoverflow.com/questions/1179865/why-are-all-rails- helpers-available-to-all-views-tout-le-temps-est-ce-un-chemin-t –

Répondre

14

Vous pouvez include ApplicationHelper dans vos contrôleurs (ou ApplicationController de base) pour rendre les méthodes d'aide disponibles.

Vous pouvez également inclure la ligne suivante dans votre ApplicationController pour inclure tous les assistants:

helper :all
+0

Je n'ai pas inclus ApplicationHelper, mais ce que vous avez dit m'a permis de créer un shared.rb dans app/controllers/ – DerNalia

7

bâton dans lib. Les assistants sont destinés à être utilisés dans les vues; Si vous avez des bibliothèques spécifiques à l'application (et par "bibliothèques" je veux dire tout code que votre application utilise, et par "spécifique à l'application" tout ce qui n'appartient pas à vendor), lib est l'endroit où aller.

34

Vous pouvez ajouter la méthode à ApplicationController. Tous les autres contrôleurs sous-classe ApplicationController, donc sera en mesure d'appeler la méthode.

Vous devez créer la méthode protected afin qu'elle soit uniquement visible pour les sous-classes et qu'elle ne soit pas disponible en tant qu'action accessible par le Web.

+0

c'est une bonne approche! + 500 –

0

Rails 3, vous pouvez utiliser: l'objet view_context dans votre contrôleur pour accéder à des méthodes d'aide de la vue. Par exemple,

class ApplicationController < ActionController::Base 
    def some_method 
    view_context.some_view_helper_method 
    end 
end 

module ApplicationHelper 
    def some_view_helper_method 
    end 
end 

Découvrez ceci: http://wowkhmer.com/2011/09/09/use-view-helper-methods-in-rails-3-controller/