2012-04-12 10 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

あなたはレールのバージョンは何誰かが正しい答えを削除何らかの理由で

を使用して? –

+0

私はレールを使用しています3.1.3 –

答えて

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

私はこの解決法を掘り下げますが、問題はリダイレクトループを作成することです。レールがルートに行きたいとき、ルートはルートにリダイレクトしようとします。これを避ける簡単な方法はありますか? –

+0

http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html ..... ':except =>' – DGM

+0

Coolで条件をチェックしてください。だから、私はこれでポップした、それはいいです。しかし、最初の "root_path"は未定義の変数またはメソッドだと考えています。私はどの構文を使用すべきかわからない。助言がありますか? 'before_filter(:except => root_path)do redirect_to root_path、 end' –

1

rake routesとなり、rootが定義されていることを確認してください。

routes.rbファイルの末尾にroot :to => "home#index"があることを確認します。

実際のコントローラ/アクション

+0

はい、定義されています。 –

+0

私はこのコードでポップしようとしましたが、フィードバックループを作成して、ルートに移動すると、ルートはルートにリダイレクトしようとします。 'before_filter do redirect_to pages_splash_path end'アクティブなページがルートでない場合、どのようにリダイレクトするだけですか? –

+0

あなたが提案したとき、私は新しいエラーエラーが発生しました。 'PagesErrorerのNameError#スプラッシュ 未定義のローカル変数またはメソッド' pages_splash_path for#

関連する問題