2012-08-28 17 views
2

我在我的Rails應用程序幾個控制器(UserController中,PostController中,SessionController等)如何使一個方法的所有控制器動作之前出現

所有每個動作之前,我想傳遞一個JSON對象使用gon gem.

我加入這行代碼爲我的應用助手:

module ApplicationHelper 

    ... 

    def adding_gon 
     gon.signed_in = signed_in?  
    end 
end 

我還添加了ApplicationHelper是提供給所有控制器:

class ApplicationController < ActionController::Base 
    include ApplicationHelper 
end 

的問題是,現在我需要去每個控制器,寫這行代碼:

before_filter :adding_gon 

這是相當一個複製到這行代碼寫入到每個控制器。

有沒有辦法讓這個方法在ALL操作之前執行?

+1

就像猜測一樣:難道你只是把它添加到應用程序控制器? (我假設你的其他控制器繼承它) – jugglinghobo

+0

欲瞭解更多信息,請閱讀此[回覆](http://stackoverflow.com/a/5072825/915039) – Felix

回答

3

由於控制器通常從ApplicationController繼承,所以不必爲每個控制器添加before_filter。只需在ApplicationController的類定義中添加該行,並將過濾器在所有子控制器的動作之前執行,除非您從其他控制器繼承。

+0

沒想到會這麼簡單。謝謝! – Alon

相關問題