Administración de Backend en Ruby on Rails


Me gustaría construir un backend administrativo realmente rápido y sucio para una aplicación Ruby on Rails a la que he estado conectado en el último minuto. He mirado activescaffold y aerodinámico y creo que ambos son muy atractivos y deberían ser fáciles de poner en marcha, pero no entiendo muy bien cómo configurar cualquiera de ellos como una página de administración de backend. Parecen diseñados para funcionar como generadores/andamios estándar de Ruby on Rails para crear front ends visibles con correspondencia modelo-vista-controlador-nombre de tabla.

¿Cómo crear una interfaz admin_players cuando players ya está en uso y desea evitar, en la medida de lo posible, que afecte a cualquiera de sus archivos relacionados?

La presentación, edición e índice del recurso original no son utilizables para el administrador.

Author: Peter Mortensen, 2008-09-20

4 answers

Creo que los espacios de nombres son la solución al problema que tienes 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, cree un controlador de administración:

./script/generate rspec_controller admin/admin

class Admin::AdminController < ApplicationController

  layout "admin"
  before_filter :login_required
end

Luego crea un controlador de clientes admin:

./script/generate rspec_controller admin/customers

Y hacer esto inhert desde su ApplicationController:

class Admin::CustomersController < Admin::AdminController

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

Luego puede usar cualquier plugin o código que desee para hacer realmente su administración, streamline, ActiveScaffold, lo que personalmente me gusta usar resourcecs_controller, ya que le ahorra mucho tiempo si usa una arquitectura de estilo REST, y forzarse por esa ruta puede ahorrar mucho tiempo en otros lugares. Aunque si usted heredó la aplicación que es un punto discutible por ahora.

 53
Author: Laurie Young,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-20 06:53:09

Echa un vistazo a active_admin en https://github.com/gregbell/active_admin .

 6
Author: phoet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-20 07:13:42

He utilizado Aerodinámico bastante extensivamente.

Para que Streamline funcione, cree sus propios controladores , para que pueda ejecutarlos completamente aparte del resto de su aplicación, e incluso puede ejecutarlos en una carpeta 'admin' y un espacio de nombres separados que se pueden proteger con .

Aquí está el controlador de clientes de 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
 5
Author: Toby Hede,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-20 09:43:46
 1
Author: rafamvc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-09 04:10:14