2009-03-28 14 views
7

私は最初のRailsアプリケーションに取り組んでおり、管理セクションを作成したいと思っています。Railsアプリケーション管理セクション

管理セクションとサイトの残りの部分で私のビューとコントローラを完全に別々に(つまり、別のディレクトリに)保存したいのですか?

ビュー/コントローラをカスタムディレクトリに整理するにはどうすればよいですか(ルーティングの設定方法を教えてください)。あなたは、このためのインデックスのURLにアクセスすることができ、あなたのroutes.rbをファイルに次に

map.resource :admin do |admin| 
    admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles" 
end 

script/generate controller admin/articles 

:あなたの管理者コントローラを作成するには

答えて

5

あなたは可能性がありまた、アプリケーションとコントローラを通常の場所に置いておき、Railsフィルタはアクセスを制御するためのもので、私があなたがここで探していると思うものです。ログインしていない場合

あなたはAWDWRブックが手元にある場合は、基本的にアプリの\コントローラ内のauthorizeメソッドを定義Chap11タスクF Administriviaに

  • を反転\許可を検査しapplication.rbは、ログインページにリダイレクトしますあなたが持つbefore_filter

へのアクセスを制限したい

  • マークコントローラをet.all。

    class AdminController < ApplicationController 
        before_filter :authorize 
        # ... the rest of the code 
    end 
    

    これは、物事を許可し、あなたについて、ここで他のコメントにこれを追加し、これはあなたが物事を名前空間方法ですAUTHORIZE

  • +0

    これは複雑なルーティングですか?私はまた、物事をより秩序あるものに保つために、別々のディレクトリを持つという考えが好きです。 – GeekJock

    +0

    全くありません。美しさは、異なるルートを定義する(または混乱させる必要はない)ということです。すべてが単一のパスを経由し、before_filterを許可すると、承認された要求だけが保護されたアクションに到達することが保証されます。これは「宣言的な」アプローチです。 – Gishu

    +2

    このアプローチは大丈夫ですが、あなたのアプリケーションを通して散らばっているいくつかの管理リソースとは対照的に、管理セクションのようなものです。 – nitecoder

    8

    <%= link_to "Articles Admin", admin_articles_path %> 
    
    5
    map.namespace :admin do |admin| 
        admin.register :controller => 'main', :action => 'register' 
        admin.login, :controller => 'main', action => 'login' 
        # ... 
    end 
    

    経由AdminControllerで定義されたアクションに対するすべての呼び出しをインターセプトして行くためにそれらを強制します戻ってくる。ユーザー管理を行うためのrestful_authenticationプラグインを見てみましょう。

    上記のルーティングでは、コントローラとそのビューが管理者と呼ばれるサブディレクトリにあると想定しています。これはあなたが望むものだと思います。

    関連する問題