2013-05-08 10 views
6

私はRailsでブログを作成しています。私がやった最初の行為は管理領域です(これは私がアプリケーション内で唯一のものです)。私はBootstrapを使ってすべてのページを素早く設計し、認証のためにDeviseを使用しました。Railsアプリケーションで管理領域を作成

すべてのモデル、ビュー、コントローラではscaffoldingを使用し、AdminPostモデルの両方を生成しました。

問題は今、私は実際のブログを作成し、/adminルートを使用して管理パネルにアクセスする必要があるということです。たとえば、新しい投稿を作成するには、http:/mysite/admin/posts/newにアクセスする必要があります。

もう1つの問題は、パブリックブログページ(ブートストラップではありません)とはまったく異なるデザインを持ち、もちろんコントローラ、ビュー、ルートが違うことです。

だから、何ができますか?

答えて

15

Adminモデルを削除することをお勧めします。あなたのケースではモデルよりも名前空間に似ています。これは、このブロックの内部のすべてのルートが/ admin wの前に置かれることになります

namespace :admin do 
    resources :posts 
end 

:私の代わりのようなあなたのroutes.rbファイルに:admin名前空間を作成します。したがって、管理側の投稿を編集するためのURLはadmin/posts/:id/editとなります。

次に、すべての管理コントローラが継承するAdminControllerを作成することをお勧めします。この方法で、新しいレイアウトを指定することができます。そして、あなたはAdmin::PostsControllerapp/controllers/admin/posts_controller.rb

アプリ/コントローラ/ admin_controller.rb

class AdminController < ApplicationController 
    layout 'admin' 
end 

アプリ/コントローラ/管理/ posts_controller.rb

class Admin::PostsController < AdminController 
    def index 
    # admin/posts 
    end 
end 

アプリ/ビューを作成することができます/admin/posts/index.html.erb

Hello from the admin/posts view! 
0

私は、ブログページを公開する必要があると思います。つまり、ブログページを表示するには非認証が必要です。残りの部分については、既にその領域を保護するためにdeviseを使用しています。

異なるテンプレートは非常に簡単ですが、2つのレイアウトを作成し、コントローラで目的のレイアウトを設定することができます。