2008-09-20 12 views
27

Me gustaría construir un back-end administrativo rápido y sucio para una aplicación de Ruby on Rails a la que me anexaron en el último momento. He analizado el diseño dinámico y simplificado y creo que son muy atractivos y deberían ser fáciles de ejecutar, pero no entiendo cómo configurar ninguno como página de administración de back-end. Parecen diseñados para funcionar como los generadores/andamios estándar de Ruby on Rails para crear interfaces visibles con la correspondencia del nombre-vista-controlador-tabla de nombres.Administración de back-end en Ruby on Rails

¿Cómo se crea una interfaz admin_players cuando los reproductores ya están en uso y se desea evitar, en la medida de lo posible, afectar a cualquiera de sus archivos relacionados?

La demostración, edición e índice del recurso original no son útiles para el administrador.

Respuesta

53

Creo espacios de nombres es la solución al problema que tenemos aquí:

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

que creará rutas admin_customers, new_admin_customers, etc.

Luego, dentro del directorio app/controller puede tener un directorio admin. Dentro de su directorio de administración, crear un controlador de administración:

./script/generate rspec_controller admin/admin 

class Admin::AdminController < ApplicationController 

    layout "admin" 
    before_filter :login_required 
end 

A continuación, cree un controlador de clientes de administración:

./script/generate rspec_controller admin/customers 

y hacer de este inhert de su ApplicationController:

class Admin::CustomersController < Admin::AdminController 

Este buscará vistas en app/views/admin/customers y esperará un diseño en app/views/layouts/admin.html.erb.

A continuación, puede utilizar cualquier plugin o código te gusta hacer realidad su administración, agilizar, ActiveScaffold, cualquiera que sea personalmente me gusta usar resourcecs_controller, ya que le ahorra un montón de tiempo si se utiliza una arquitectura REST estilo, y forzando usted mismo por esa ruta puede ahorrar mucho tiempo en otro lugar. Aunque si heredaste la aplicación es un punto discutible por ahora.

+5

un par de cosas que debe agregar a esta respuesta para ayudarnos a rails n00bs: mencione que el primer bloque de código se encuentra en routes.rb y también mencione que necesita instalar gemas rspec y rspec-rails para generar un rspec_controller . – DJTripleThreat

+6

Estimada Laurie Young, ¿podría reescribir su ejemplo para Rails 3? – Kir

5

He utilizado bastante exhaustivamente.

Para hacer que Streamline funcione, cree sus propios controladores, para poder ejecutarlo completamente aparte del resto de su aplicación, e incluso puede ejecutarlo en una carpeta 'admin' separada y espacio de nombres que se puede proteger con .

Aquí es el controlador de clientes desde una aplicación reciente:

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