2008-09-20 8 views
27

Je voudrais créer un véritable backend administratif rapide et corrompu pour une application Ruby on Rails à laquelle j'ai été attaché à la dernière minute. J'ai regardé activescaffold et rationalisé et pense qu'ils sont tous les deux très attrayants et ils devraient être simples à courir, mais je ne comprends pas très bien comment configurer l'un comme une page d'administration backend. Ils semblent conçus pour fonctionner comme des générateurs/échafaudages standard Ruby on Rails pour créer des frontaux visibles avec une correspondance de nom de modèle-vue-contrôleur-table.Administration backend dans Ruby on Rails

Comment créer une interface admin_players lorsque les joueurs sont déjà utilisés et que vous voulez éviter, autant que possible, d'affecter l'un de ses fichiers associés?

L'affichage, la modification et l'index de la ressource d'origine ne sont pas utilisables par l'administrateur.

Répondre

53

Je pense que namespaces est la solution au problème que vous avez ici:

map.namespace :admin do |admin| 
    admin.resources :customers 
end 

qui va créer des itinéraires admin_customers, new_admin_customers, etc. Puis, dans le répertoire app/controller, vous pouvez avoir un répertoire admin. A l'intérieur de votre répertoire admin, créez un contrôleur d'administration:

./script/generate rspec_controller admin/admin 

class Admin::AdminController < ApplicationController 

    layout "admin" 
    before_filter :login_required 
end 

Ensuite, créez un contrôleur administration de clients:

./script/generate rspec_controller admin/customers 

Et faire ce inhert de votre ApplicationController:

class Admin::CustomersController < Admin::AdminController 

Cela cherchera vues dans app/views/admin/customers et attend une mise en page dans app/views/layouts/admin.html.erb.

Vous pouvez ensuite utiliser selon plug-in ou un code que vous aimez faire réellement votre administration, Streamline, ActiveScaffold, quelle que soit personnellement, je préfère utiliser resourcecs_controller, car il vous permet d'économiser beaucoup de temps si vous utilisez une architecture de style REST, et en forçant vous pouvez économiser beaucoup de temps ailleurs. Bien que si vous avez hérité de l'application qui est un point discutable maintenant.

+5

quelques choses que vous devriez ajouter à cette réponse pour nous aider à n00bs rails: mentionner que le premier bloc de code se trouve dans routes.rb et aussi mentionner que vous devez installer rspec et rspec-rails gems afin de générer un rspec_controller . – DJTripleThreat

+6

Chère Laurie Young, pourriez-vous réécrire votre exemple pour les Rails 3? – Kir

5

J'ai beaucoup utilisé Streamlined. Pour que Streamline fonctionne, vous devez créer vos propres contrôleurs - vous pouvez donc les exécuter complètement indépendamment du reste de votre application, et vous pouvez même l'exécuter dans un dossier 'admin' et un espace de noms qui peuvent être sécurisés avec .

Voici le contrôleur clients à partir d'une application récente:

class CustomersController < ApplicationController 
    layout 'streamlined' 
    acts_as_streamlined  

    Streamlined.ui_for(Customer) do 
    exporters :csv 
    new_submit_button :ajax => false 
    default_order_options :order => "created_at desc" 
    list_columns :name, :email, :mobile, :comments, :action_required_yes_no 
    end 
end