2010-09-24 7 views
1

Nouveau sur les rails et j'ai ce que je pense est une question fondamentale.Rails Débutant - quel contrôleur utiliser?

Dans une vue d'administration, il y aura différentes opérations effectuées sur différents modèles de données. J'ai une mise en page "admin" qui a divers onglets que l'utilisateur clique pour charger des formulaires pour éditer divers ensembles de données. Le contrôleur pour tout ce qui peut être modifié dans cette vue doit être dans admin_controller (par exemple, avoir un edit_product, edit_user ...), ou est-il préférable de laisser les fonctions dans le contrôleur pour chaque modèle (par exemple, users_controller, products_controller, orders_controller) et spécifiez-vous dans les contrôleurs pour utiliser la disposition d'administration? Je travaille sur mon premier projet de rails, et il semble que l'une ou l'autre façon marche, mais évidemment je veux suivre la bonne convention à l'avenir ainsi n'importe quel indice, ou un lien vers un article sur ce sujet serait apprécié.

Merci,

Répondre

5

La bonne façon Rails de le faire serait d'utiliser Namespaces. Je vais vous donner un exemple ci-dessous:

dans votre dossier controllers, vous ajoutez un nouveau dossier appelé admin, et pour chaque modèle que vous souhaitez modifier comme admin, ajouter un contrôleur. Voici une application de blogue de base:

app/ 
    models/ 
    views/ 
    controllers/ 
    users_controller.rb 
    posts_controller.rb 
    comments_controller.rb 
    admin/ 
     users_controller.rb 
     posts_controller.rb 
     comments_controller.rb 

Notez la nouvelle couche de dossier dans notre dossier controller. A l'intérieur de chacun de ces fichiers, vous modifiez la définition de la classe, de:

class UsersController < ApplicationController 

à:

class Admin::UsersController < ApplicationController 

Maintenant, dans votre fichier congif/routes.rb, vous pouvez namespace vos itinéraires à l'espace d'administration , comme ceci:

map.namespace :admin do |admin| 
    admin.resources :users 
    admin.resources :posts 
    admin.resources :comments 
end 

maintenant, vous pouvez aller à une URL telle que: http://localhost:3000/admin/users/1 et vous aurez accès à tout ce que vous avez spécifié dans la version d'administration de votre contrôleur utilisateurs.

Vous pouvez lire plus dans this question StackOverflow, et lire sur les routes here.

+0

Merci beaucoup d'avoir pris le temps d'écrire ceci. C'est exactement ce que je cherchais et devrait être inclus dans les guides de rails standard. – nktokyo

2

Bonne réponse de Mike. Je voudrais ajouter que vous pouvez voir le code de rails « standard » pour cela en utilisant un générateur:

# in rails 2.3 
$ script/generate controller admin/users 

# in rails 3.0 
$ rails generate controller admin/users 

La barre oblique dans le nom du contrôleur définit un espace de noms. Voir également rake routes pour les chemins nommés qu'il crée, par ex. admin_users_path etc.

Questions connexes