2010-02-10 6 views
16

Pour les experts des rails, je me demandais où et comment exécuter le même code pour chaque action de votre application Web. Si vous pouvez me diriger vers un article ou fournir un court extrait de code, je l'apprécierais grandement.Rails ActionController Exécuter le même code pour chaque action

Merci d'avance à tous ceux qui peuvent vous aider.

+0

Chaque action dans un seul contrôleur? –

Répondre

30

Utilisez un filtre dans votre ApplicationController pour exécuter le code pour chaque action dans votre application . Tous vos contrôleurs descendent d'ApplicationController, donc mettre le filtre là-bas assurera l'exécution du filtre.

class ApplicationController 
    before_filter :verify_security_token 
    def verify_security_token; puts "Run"; end; 
end 
15

Il me semble que vous parlez de filters.

class MyController < ActionController::Base 
    before_filter :execute_this_for_every_action 

    def index 
    @foo = @bar 
    end 

    def new 
    @foo = @bar.to_s 
    end 

    def execute_this_for_every_action 
    @bar = :baz 
    end 
end 

Vous pouvez également placer le filtre sur ApplicationController si vous souhaitez que chaque contrôleur l'exécute.

2
  • before_filter si vous voulez le code à exécuter "avant" chaque action.

  • Si vous souhaitez que l'action soit déclarée chaque fois que vous l'utilisez, vous pouvez la mettre dans ApplicationController et appeler la méthode dans n'importe quel contrôleur.

Une autre approche consiste à utiliser des aides comme:

module PersonHelper 
    def eat 
    {.. some code ..} 
    end 
end 

Et dans votre contrôleur:

class MyController < ActionController::Base 
    include PersonHelper 

    def index 
    eat 
    end 
end