2009-03-28 6 views
7

Je travaille sur ma première application Rails et je souhaite créer une section admin. Est-ce que je veux garder mes vues et contrôleurs complètement séparés (c'est-à-dire dans des répertoires séparés) pour la section admin et le reste du site?Rails Application Admin Section

Comment organiser mes vues/contrôleurs dans des répertoires personnalisés (comment configurer le routage)?

Répondre

5

Vous pouvez Gardez également les applications et les contrôleurs à leur place habituelle et utilisez les filtres Rails pour contrôler l'accès, ce que je pense que vous cherchez ici.

Si vous avez le AWDWR livre à portée de main, retournez à chap11 Tâche F Administrivia

  • Fondamentalement définir une méthode authorize dans les contrôleurs app \ \ application.rb, qui vérifie l'autorisation, redirige vers la page de connexion si non connecté et.all
  • contrôleurs de marque que vous souhaitez restreindre l'accès à des before_filter s

.

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

Cela intercepter tous les appels à des actions définies dans AdminController et les forcer à passer par autoriser

+0

Est-ce que cela compliquerait le routage? J'aime aussi l'idée d'avoir des répertoires séparés juste pour garder les choses plus ordonnées. – GeekJock

+0

Pas du tout .. La beauté est que vous n'avez pas à définir (ou même à faire) avec différents itinéraires. Tout passe par un seul chemin, l'authorisation before_filter assure que seules les requêtes autorisées parviennent aux actions protégées. C'est une approche 'déclarative'. – Gishu

+2

Cette approche est correcte, mais pas toujours appropriée, surtout si vous voulez avoir un CMS presque comme la section admin, par opposition à quelques ressources d'administration jonchées à travers votre application. – nitecoder

8

Pour créer vos contrôleurs admin:

script/generate controller admin/articles 

ensuite dans votre fichier routes.rb

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

Vous pouvez ensuite accéder à l'URL de l'index pour cela:

<%= 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 

Voici comment l'espace de noms choses, ajoutez aux autres commentaires ici sur l'autorisation des choses et vous sommes partis. Jetez un coup d'œil sur le plugin restful_authentication pour gérer vos utilisateurs, beaucoup plus rapidement et plus facilement que de faire votre propre gestion.

Le routage ci-dessus suppose que les contrôleurs et leurs vues se trouvent dans un sous-répertoire appelé admin, ce que je pense être ce que vous voulez.