Rails的另一部分

时间:2011-06-29 12:31:59

标签: ruby-on-rails ruby ruby-on-rails-3

我看到很多关于在Rails 3中创建另一个部分的讨论,但没有完整的指南。

我想创建另一个部分,例如

/admin/...

我以前的所有控制器都继承自

ApplicationController 

并使用

layout/application.html.erb

所以现在我希望位于新创建的/ admin / ...目录中的每个控制器继承形式不同的BaseController并使用与application.html.erb不同的布局。如果有可能,你可以提供一个指南,说明必须在/ admin /中创建哪些文件...哪些用于布局以及我必须在路径文件中放置什么?

提前致谢。

2 个答案:

答案 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