2008-09-20 21 views
27

Ich möchte ein wirklich schnell und schmutzig Verwaltungs-Back-End für eine Ruby on Rails-Anwendung erstellen, an die ich in letzter Minute angeschlossen wurde. Ich habe mir Activescaffold und Streamlined angeschaut und denke, dass sie beide sehr attraktiv sind und dass sie einfach zum Laufen gebracht werden sollten, aber ich verstehe nicht, wie ich sie als Backend-Administrations-Seite einrichten soll. Sie scheinen so zu funktionieren, dass sie wie normale Ruby on Rails Generatoren/Scaffolds funktionieren, um sichtbare Frontends mit Modell-View-Controller-Tabellennamen zu erzeugen.Back-End-Verwaltung in Ruby on Rails

Wie erstelle ich eine admin_players-Schnittstelle, wenn die Player bereits verwendet werden und Sie so viele mögliche Dateien wie möglich vermeiden möchten?

Das Anzeigen, Bearbeiten und Indexieren der ursprünglichen Ressource ist für den Administrator nicht geeignet.

Antwort

53

ich Namespaces denke, die Lösung für das Problem ist, müssen Sie hier:

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

Welche admin_customers Routen schaffen, new_admin_customers, etc .

Dann im Verzeichnis app/controller können Sie ein admin Verzeichnis haben. In Ihrem Admin-Verzeichnis, ein Admin-Controller erstellen:

./script/generate rspec_controller admin/admin 

class Admin::AdminController < ApplicationController 

    layout "admin" 
    before_filter :login_required 
end 

Dann ein Admin-Kunden-Controller erstellen:

./script/generate rspec_controller admin/customers 

Und diese inhert von Ihrem Application machen:

class Admin::CustomersController < Admin::AdminController 

Dies wird sich für Ansichten in app/views/admin/customers und erwarten ein Layout in .

Sie können dann mit je nachdem, welche Plugin oder Code, den Sie für Ihre Verwaltung tatsächlich zu tun, rationalisieren, ActiveScaffold, was auch immer persönlich Ich mag resourcecs_controller verwenden, da es Ihnen viel Zeit spart, wenn Sie eine REST Architektur verwenden, und Zwingen Wenn Sie sich auf dieser Route befinden, können Sie anderswo viel Zeit sparen. Obwohl wenn Sie die Anwendung geerbt haben, ist das ein strittiger Punkt.

+5

ein paar Dinge, die Sie zu dieser Antwort hinzufügen sollten, um uns zu helfen rails n00bs: Erwähnen Sie, dass der erste Code-Block in routes.rb befindet und auch erwähnen, dass Sie rspec und rspec-rails Edelsteine ​​installieren müssen, um eine rspec_controller zu generieren . – DJTripleThreat

+6

Liebe Laurie Young, kannst du dein Beispiel für die Rails 3 umschreiben? – Kir

5

Ich habe Streamlined ziemlich ausgiebig verwendet.

Um Streamline arbeiten zu können, erstellen Sie Ihre eigenen Controller - so dass Sie sie vollständig vom Rest Ihrer Anwendung aus ausführen können. Sie können sie sogar in einem separaten 'Admin'-Ordner und Namespace ausführen, der mit gesichert werden kann.

Hier wird die Kunden-Controller aus einer aktuellen App ist:

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