2009-03-28 16 views
7

Estoy trabajando en mi primera aplicación Rails y quiero crear una sección de administrador.Rails Aplicación Admin Sección

¿Deseo mantener mis vistas y controladores completamente separados (es decir, en directorios separados) para la sección de administración y el resto del sitio?

¿Cómo puedo organizar mis vistas/controladores en directorios personalizados (¿cómo configuro el enrutamiento)?

Respuesta

5

Usted podría también mantenga las aplicaciones y los controladores en sus lugares habituales y use Filtros de rieles para controlar el acceso, que es lo que creo que estás buscando aquí.

Si usted tiene la AWDWR libro a la mano, dar la vuelta a Chap11 Tarea F Administrivialidades

  • definen básicamente un método de autorizar, en aplicación \ controllers \ application.rb, que verifica la autorización, redirige a la página de acceso si no hay sesión en et.all
  • controladores Marcar desea restringir el acceso a la before_filter s

.

class AdminController < ApplicationController 
    before_filter :authorize 
    # ... the rest of the code 
end 

Esto interceptar todas las llamadas a las acciones definidas en AdminController y obligarlos a pasar por autorizar

+0

¿Podría complicar el enrutamiento? También me gusta la idea de tener directorios separados solo para mantener las cosas más ordenadas. – GeekJock

+0

No, en absoluto ... La belleza es que no tiene que definir (o incluso meterse con) diferentes rutas. Todo va a través de una ruta única, autorizar before_filter asegura que solo las solicitudes autorizadas lleguen a las acciones protegidas. Es un enfoque 'declarativo'. – Gishu

+2

Ese enfoque está bien, pero no siempre es apropiado, especialmente si quiere tener casi un CMS como la sección de administración en lugar de unos pocos recursos de administración distribuidos en su aplicación. – nitecoder

8

para crear sus controladores de administración:

script/generate controller admin/articles 

A continuación, en el archivo de routes.rb

map.resource :admin do |admin| 
    admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles" 
end 

A continuación, puede acceder a la URL para este índice:

<%= link_to "Articles Admin", admin_articles_path %> 
5
map.namespace :admin do |admin| 
    admin.register :controller => 'main', :action => 'register' 
    admin.login, :controller => 'main', action => 'login' 
    # ... 
end 

Esta es la forma de espacio de nombres de cosas, agrega esto a los otros comentarios aquí sobre autorizan las cosas y se estás lejos. Eche un vistazo al complemento restful_authentication para hacer su gestión de usuarios, mucho más rápido y más fácil que hacer su propio.

El enrutamiento anterior supone que los controladores y sus vistas se encuentran en un subdirectorio llamado admin, que creo que es lo que desea.

Cuestiones relacionadas