2012-04-12 50 views
1

我試圖創建一個啓動頁面。我發現這個post,但我似乎無法得到before_filter的正確語法。下面是我有:(我改變了根路徑是飛濺頁)不確定before_filter的正確語法

before_filter redirect_to root_path 

但它彈出這個錯誤:

Routing Error 

undefined local variable or method `root_path' for ApplicationController:Class 

任何想法,我米做錯了嗎?

+0

什麼版本的軌道是你使用? – 2012-04-12 03:07:25

+0

我正在使用rails 3.1.3 – 2012-04-12 03:40:53

回答

3

澄清:root_path存在作爲一個實例方法,而不是作爲類的安裝過程中的一類方法。因此需要阻止或方法調用來將呼叫或root_path延遲到呼叫的實際時間,而不是在加載類時。

出於某種原因,有人刪除了正確的答案:它移動到塊的形式:

before_filter do 
    redirect_to root_path 
end 

假設root_path點:指數,你可以:

before_filter(:except => :index) do 
    redirect_to root_path 
end 
+0

我挖這個解決方案,但問題是,它創建了一個重定向循環。當rails想要轉到根目錄時,它會嘗試重定向到根目錄。有沒有簡單的方法來避免這種情況? – 2012-04-12 03:39:45

+0

檢查出http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html條件.....':除了=>' – DGM 2012-04-12 03:50:47

+0

冷卻。所以我彈出這個,這很好。但它認爲第一個「root_path」是一個未定義的變量或方法。我不確定我應該使用什麼語法。有什麼建議麼? 'before_filter(:except => root_path)do redirect_to root_path, end' – 2012-04-12 04:01:43

1

rake routes並確保root已定義。

例如您在routes.rb文件的底部有root :to => "home#index"

更換主場#指數與實際控制人/動作

+0

是的,它已被定義。 – 2012-04-12 03:11:42

+0

我試圖在這段代碼中彈出,但是它創建了一個反饋循環,這樣當我導航到根時,rails會嘗試重定向到根。 'before_filter do redirect_to pages_splash_path end'如果活動頁面不是root,我將如何告訴rails只重定向? – 2012-04-12 03:12:38

+0

所以,當我你有什麼建議,我得到一個新的錯誤錯誤:'NameError在PagesController#飛濺 未定義的局部變量或方法'pages_splash_path「爲# 2012-04-12 03:25:23