Amministrazione back-end in Ruby on Rails
-
01-07-2019 - |
Domanda
Vorrei creare un backend amministrativo rapido e sporco per un'applicazione Ruby on Rails a cui sono stato assegnato all'ultimo minuto. Ho esaminato attivamente e ottimizzato e penso che siano entrambi molto interessanti e dovrebbero essere semplici da avviare, ma non capisco bene come impostare uno come pagina di amministrazione del back-end. Sembrano progettati per funzionare come generatori / scaffold standard di Ruby on Rails per la creazione di front-end visibili con corrispondenza del nome tabella modello-controller-tabella.
Come si crea un'interfaccia admin_players quando i giocatori sono già in uso e si desidera evitare, per quanto possibile, di influire su uno dei suoi file correlati?
Lo spettacolo, la modifica e l'indice della risorsa originale non sono utilizzabili dall'amministratore.
Soluzione
Penso che i namespace siano la soluzione al problema che hai qui:
map.namespace :admin do |admin|
admin.resources :customers
end
Che creerà percorsi admin_customers
, new_admin_customers
, ecc.
Quindi all'interno della directory app / controller
puoi avere una directory admin
. All'interno della tua directory di amministrazione, crea un controller di amministrazione:
./script/generate rspec_controller admin/admin
class Admin::AdminController < ApplicationController
layout "admin"
before_filter :login_required
end
Quindi crea un controller clienti amministratore:
./script/generate rspec_controller admin/customers
E rendilo ereditato dal tuo ApplicationController:
class Admin::CustomersController < Admin::AdminController
Questo cercherà le viste in app / views / admin / customers
e si aspetterà un layout in app / views / layouts / admin.html.erb
.
Puoi quindi utilizzare qualsiasi plug-in o codice che ti piace per fare effettivamente la tua amministrazione, ottimizzare, ActiveScaffold, qualunque cosa personalmente mi piace usare resourcecs_controller
, poiché ti fa risparmiare molto tempo se usi un REST e forzarti lungo quel percorso può farti risparmiare molto altrove. Tuttavia, se hai ereditato l'applicazione, questo è un punto controverso ormai.
Altri suggerimenti
Dai un'occhiata a active_admin su https://github.com/gregbell/active_admin .
Ho usato Streamlined abbastanza ampiamente.
Per far funzionare Streamline crei i tuoi controller - in modo da poterlo effettivamente eseguire completamente separato dal resto dell'applicazione e puoi persino eseguirlo in una cartella 'admin' separata e in uno spazio dei nomi che può essere protetto con .
Ecco il controller Clienti di un'app recente:
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