Hay algunas opciones diferentes:
1. lambda en el archivo de rutas (no muy railsy)
previously explained
2. redirección en el controlador de aplicación basado en un filtro antes (esto es óptimo, pero su ruta de administrador no estará en la raíz)
fuente rails guides - routing
tendría dos rutas y dos controladores. por ejemplo, puede tener un HomeController
y luego un AdminController
. Cada uno de ellos tendría una acción index
.
su archivo config/routes.rb
tendría
namespace :admin do
root to: "admin#index"
end
root to: "home#index"
El método de espacio de nombres le da una ruta en /admin
y la raíz normal sería accesible en '/'
Entonces ser seguro; en su controlador de administrador, agregue un before_filter para redirigir a los que no sean administradores, y en el controlador de su hogar podría redirigir a cualquier usuario administrador.
3. Cambiando dinámicamente el diseño según la función del usuario.
En el mismo controlador que su raíz va, agregue un método de ayuda que cambie el diseño.
layout :admin_layout_filter
private
def admin_layout_filter
if admin_user?
"admin"
else
"application"
end
end
def admin_user?
current_user.present? && current_user.admin?
end
A continuación, en la carpeta de diseños, agregue un archivo llamado admin.html.erb
fuente: rails guides - layouts and routing