我看到很多关于在Rails 3中创建另一个部分的讨论,但没有完整的指南。
我想创建另一个部分,例如
/admin/...
我以前的所有控制器都继承自
ApplicationController
并使用
layout/application.html.erb
所以现在我希望位于新创建的/ admin / ...目录中的每个控制器继承形式不同的BaseController并使用与application.html.erb不同的布局。如果有可能,你可以提供一个指南,说明必须在/ admin /中创建哪些文件...哪些用于布局以及我必须在路径文件中放置什么?
提前致谢。
答案 0 :(得分:5)
在你的控制器下创建一个admin目录,然后有一个'admin'控制器(所以他们继承了set layout - 对强制认证也很有用),例如
class Admin::AdminController < ApplicationController
layout 'admin/admin'
end
然后让管理员目录中的其他控制器延伸到管理员控制器,例如
class Admin::CategoriesController < Admin::AdminController
def index
...
end
end
您还需要在布局下创建一个admin文件夹和admin.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
答案 1 :(得分:0)
你可以在你的/ admin /中添加一个base_controller.rb,让你的其他控制器在/ admin / inherit中从Admin :: BaseController继承。只需包含一个&lt; ApplicationController在/admin/base_controller.rb中。
现在在/admin/base_controller.rb中指定布局。
对于路由,您只需添加可用于通用公共的引用。为它添加命名空间:
namespace :admin do
resouces :xyz
end