2011-01-02 7 views
3

申し訳ありませんが、これはばかげた質問かもしれませんが、私のフィルタがRails 3のドキュメントの通りに継承することができません。before_filterが親コントローラから正しく継承されていませんか?

rails generate controller admin 

私は、管理コントローラにのみ単一のアクション、次フィルタ&プライベートフィルタ方式前

class AdminController < ApplicationController 

    before_filter require_admin_creds 

    def index 
    end 

private 

    def require_admin_creds 
    unless current_user && current_user.admin? 
     flash[:error] = ... 
     redirect_to .... 
    end 
    end 
end 

Iを追加しました:具体

Iを介して生成された管理コントローラを有しています管理セクションの下に入れ子リソースを作成しました。

rails generate scaffold admin/model 

私の管理者インデックスは実際にフィルタを取得していますが、管理者/モデルのインデックス(または他のアクション)はありません。私が除外しなければならなかったここのフードの下で何が起こっていますか?

ありがとうございます。

+0

before_filterは定義されている特定のコントローラにのみ適用されることは間違いありません。それが継承されるべきところはどこにありますか?また、admin/modelを生成することはadmin名前空間にコントローラを作成しています...これは継承ではありません。 –

答えて

4

require_admin_credsをプライベートではなく保護された方法にします。

+0

他の投稿にまだコメントすることはできませんので、Sean Hillsのコメント:はいbefore_filtersは継承されます。 – ramn

+0

ええ、私は今それを参照してください。彼はAdminControllerから継承するためにAdmin :: ModelControllerを変更する必要があります。これはModelControllerをAdmin名前空間に配置するだけで継承が作成されないためです。下の私の答えを見てください。 –

+1

確かに、良いキャッチ – ramn

1

あなたが変更しました:

Admin::ModelController < ApplicationController 

Admin::ModelController < AdminController 

に?

モデルコントローラを管理名前空間に配置しないで継承を作成します。

+0

おかげで、あなたは両方の部分で右です。初心者の助けに感謝します。 – Scott

0

構文を再確認してください。

before_filter require_admin_creds 

を私はそれがあるべきだと思う:あなたは持っている

あなたがシンボルではなく、変数/メソッド名を使用し
before_filter :require_admin_creds 

関連する問題