2009-06-18 55 views
0

我的ApplicationController中有一個方法,它是before_filter的一部分。如何識別哪個控制器正在調用該方法,並且可以將參數傳遞給它?假設最壞的情況下,我可以創建一個新的對象,在其中使用控制器名稱和值,然後直接使用NewObject.find(:first,:conditions => ['controller_name =?',controller_name ],但在提前聞起來很糟糕在ApplicationController(RoR)中識別方法的調用者

於是我打開思路感謝

僞短代碼:。

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


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

回答

8

params[:controller]params[:action]包含請求的控制器和動作,以及可從過濾器內。

2

使用self.class會告訴你哪個控制器已經調用了before_filter。

class HomeController < ApplicationController 
    before_filter :awesome 

    def index 
    render :text => @blah 
    end 

    def awesome 
    @blah = self.class 
    end 
end 

會呈現出「的HomeController」

相關問題