Ruby on rails Rails应用程序管理部分

Ruby on rails Rails应用程序管理部分,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在开发我的第一个Rails应用程序,希望创建一个管理部分 我想让我的视图和控制器对于管理部分和站点的其余部分完全分开(即,在单独的目录中)吗 如何在自定义目录中组织视图/控制器(如何配置路由)?要创建管理员控制器: script/generate controller admin/articles 然后在routes.rb文件中 map.resource :admin do |admin| admin.resources :articles, :path_prefix => "a

我正在开发我的第一个Rails应用程序,希望创建一个管理部分

我想让我的视图和控制器对于管理部分和站点的其余部分完全分开(即,在单独的目录中)吗


如何在自定义目录中组织视图/控制器(如何配置路由)?

要创建管理员控制器:

script/generate controller admin/articles
然后在routes.rb文件中

map.resource :admin do |admin|
  admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles"
end
然后,您可以访问以下内容的索引url:

<%= link_to "Articles Admin", admin_articles_path %>

您还可以将应用程序和控制器保留在它们通常的位置,并使用Rails过滤器来控制访问,我想这正是您在这里寻找的

如果您手头有AWDWR手册,请翻到第11章任务F Administrivia

  • 基本上在app\controllers\application.rb中定义一个authorize方法,该方法检查授权,如果未登录et.all,则重定向到登录页面
  • 在筛选之前用
    标记要限制访问的控制器

class AdminController
这将拦截对AdminController中定义的操作的所有调用,并强制它们通过“授权”

map.namespace :admin do |admin|
  admin.register :controller => 'main', :action => 'register'
  admin.login, :controller => 'main', action => 'login'
  # ...
end
这就是你命名事物的方式,把它添加到关于授权事物的其他注释中,你就离开了。看看restful_认证插件,它可以帮助您进行用户管理,比您自己使用的更快、更容易


上面的路由假设控制器及其视图位于名为admin的子目录中,我想这正是您想要的。

这会使路由复杂化吗?我也喜欢有单独目录的想法,只是为了让事情更有序。一点也不。。美妙之处在于你不必定义(甚至搞乱)不同的路线。一切都通过一条路径进行,authorize before_筛选器确保只有授权请求才能通过受保护的操作。这是一种“声明式”方法。这种方法可以,但并不总是合适的,特别是如果你想有一个类似CMS的管理部分,而不是在你的应用程序中乱扔一些管理资源。
map.namespace :admin do |admin|
  admin.register :controller => 'main', :action => 'register'
  admin.login, :controller => 'main', action => 'login'
  # ...
end