2009-06-18 9 views
0

私は、自分のApplicationControllerにbefore_filterの一部であるメソッドを持っています。どのコントローラーがそのメソッドを呼び出すのか、どのコントローラーに引数を渡すことができますか?ApplicationController(RoR)でメソッドの呼び出し元を特定する

おそらく最悪の場合、コントローラ名と値を使用する場所に新しいオブジェクトを作成してから、NewObject.find(:first =:[controller_name = ]、それは非常に臭い

だから私はアイデアを開いている事前に感謝

擬似ショートコード:。。。

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]が要求されたコントローラとアクションが含まれており、フィルタの内側から入手可能です「にHomeControllerを」アウトレンダリングします。

2

self.classを使用するには、あなたにどのコントローラを教えてくれますbefore_filterを呼び出しました。

class HomeController < ApplicationController 
    before_filter :awesome 

    def index 
    render :text => @blah 
    end 

    def awesome 
    @blah = self.class 
    end 
end 

関連する問題