2011-01-13 27 views
5

我試圖創建一個動作,如果用戶登錄,將檢查每一頁 爲此,在控制器Home我創造了這個方法:的before_filter與另一個控制器

def check_session 
    if !session[:user_id] 
    redirect_to :action=> 'login' 
    end 
end 

而且我已經把這個代碼在控制器的頭:

before_filter :check_session, :except => [:sub_layout, :authenticate, :login] 

現在我想要使用的Home頁外check_session,讓在Users頁說。在before_filter中調用不同控制器方法的正確語法是什麼?

回答

7

如果您將您已擁有的所有內容移至application_controller,它將檢查應用程序中的每個控制器。然後使用:skip_before_filter method繞過檢查所需的任何控制器/操作。

+0

好的,而不是如何定義:except方法? – hizki

+0

Hizki,編輯答案,以幫助你。 – JackCA

+0

謝謝!另一件事...可以說我會有多個'before_filter's,有沒有辦法指定哪些跳過? 編輯:我查看了該方法的鏈接。它在那裏解釋......再次感謝! – hizki