2011-06-29 106 views
2

我在Rails 3中看到了很多有關創建另一個部分的討論,但沒有完整的指南。Rails中的另一個部分

我想創建例如另一部分

/admin/... 

我以前所有的控制器繼承

ApplicationController 

,並使用

layout/application.html.erb 

所以現在我希望每一個控制器,它在新創建的/ admin/...目錄中放置一個不同的BaseController和使用與application.html.erb不同的佈局。如果這是可能的,你可以提供一個關於哪些文件必須在/ admin/...中創建的指南,這對於佈局以及我必須在路徑文件中放置什麼?

在此先感謝。

回答

5

下你的控制器創建admin目錄,然後有一個「管理員」控制器(因此他們繼承組佈局 - 也迫使認證等有用的),例如

class Admin::AdminController < ApplicationController   
    layout 'admin/admin' 
end 

然後讓其他控制器的admin目錄擴展超出管理控制器例如

class Admin::CategoriesController < Admin::AdminController 

    def index 
    ... 
    end 

end 

你需要在你的佈局,以創建一個管理員文件夾,也和廣告min.html.erb(或者你使用的任何模板引擎,無論你喜歡什麼佈局,顯然都可以命名)。其他管理控制器方法的視圖也需要存在於其各自的管理文件夾下,例如app/views/admin/categories/index.html.erb(第二個管理員是控制器的名稱

您還需要添加路由在routes.rb - 假設的Rails 3

namespace :admin do 
    root :to => 'admin#index' #default page when accessing /admin 
    resources :categories #whatever resources you want 
    ... 
end 
+0

感謝很多:)這是一個全面的迴應:) – glarkou

+0

你會發現更多的幫助,如果您搜索的命名空間,而不是部分 – DGM

0

您可以在/ admin /中添加一個base_controller.rb,並讓其他控制器在/ admin /從Admin :: BaseController繼承。只需在您的/admin/base_controller.rb中包含一個< ApplicationController。

現在在/admin/base_controller.rb中指定佈局。

對於路由,您只需要添加可用於通用公共的引用。添加一個命名空間爲它:

namespace :admin do 
    resouces :xyz 
end 
相關問題