2009-06-18 4 views
0

J'ai une méthode dans mon ApplicationController qui fait partie d'un before_filter. Comment identifier quel contrôleur appelle cette méthode et puis-je lui transmettre des arguments? Probablement le pire des cas, je peux créer un nouvel objet où j'utilise des noms et des valeurs de contrôleur, puis l'appeler directement dans la méthode before_filter avec NewObject.find (: first,: conditions => ['controller_name =?', Controller_name ], mais qui sent très mauvaisIdentification de l'appelant d'une méthode dans ApplicationController (RoR)

Je suis ouvert aux idées Merci d'avance

pseudo-code court:...

class ApplicationController < ActionController::Base 
    before_filter :someMethod 
    .... 
    def someMethod 
     Do stuff 
    end 


class SomeController < ApplicationController 
    # presumably the before_filter runs here 
    @someValueIWantToPass = some.value 
    ... 

Répondre

8

params[:controller] et params[:action] contiennent le contrôleur et l'action demandée, et sont disponibles à l'intérieur d'un filtre.

2

en utilisant self.class vous dira quel contrôleur a appelé le before_filter

class HomeController < ApplicationController 
    before_filter :awesome 

    def index 
    render :text => @blah 
    end 

    def awesome 
    @blah = self.class 
    end 
end 

se rendre sur « HomeController »

Questions connexes