Backend-administrasie in Ruby on Rails
-
01-07-2019 - |
Vra
Ek wil graag 'n vinnige en vuil administratiewe agterkant bou vir 'n Ruby on Rails-toepassing waaraan ek op die laaste oomblik geheg is.Ek het na activescaffold en vaartbelyn gekyk en dink hulle is albei baie aantreklik en hulle behoort maklik aan die gang te wees, maar ek verstaan nie mooi hoe om een van die twee as 'n backend-administrasiebladsy op te stel nie.Dit lyk asof hulle ontwerp is om te werk soos standaard Ruby on Rails kragopwekkers / steierwerk vir die skep van sigbare voorkante met model-aansig-beheerder-tabel naam korrespondensie.
Hoe skep jy 'n admin_players-koppelvlak wanneer spelers reeds in gebruik is en jy wil vermy, soveel as moontlik, om enige van sy verwante lêers te beïnvloed?
Die vertoning, wysiging en indeks van die oorspronklike hulpbron is nie bruikbaar vir die administrateur nie.
Oplossing
Ek dink naamruimtes is die oplossing vir die probleem wat jy hier het:
map.namespace :admin do |admin|
admin.resources :customers
end
Wat roetes sal skep admin_customers
, new_admin_customers
, ens.
Toe binne die app/controller
gids kan jy 'n admin
gids.Skep 'n administrateurbeheerder binne jou administrasiegids:
./script/generate rspec_controller admin/admin
class Admin::AdminController < ApplicationController
layout "admin"
before_filter :login_required
end
Skep dan 'n admin-kliëntebeheerder:
./script/generate rspec_controller admin/customers
En maak dit inherent van jou ApplicationController:
class Admin::CustomersController < Admin::AdminController
Dit sal kyk vir aansigte in app/views/admin/customers
en sal 'n uitleg in verwag app/views/layouts/admin.html.erb
.
Jy kan dan watter inprop of kode jy wil gebruik om werklik jou administrasie, vaartbelyn, ActiveScaffold te doen, wat ek persoonlik wil gebruik resourcecs_controller
, aangesien dit jou baie tyd bespaar as jy 'n RUS stylargitektuur, en om jouself op daardie roete af te dwing, kan baie tyd elders bespaar.Maar as jy die toepassing geërf het, is dit nou 'n betwiste punt.
Ander wenke
Kyk gerus na active_admin by https://github.com/gregbell/active_admin.
Ek het Streamline redelik baie gebruik.
Om Streamline te laat werk, skep jy jou eie beheerders - sodat jy dit eintlik heeltemal los van die res van jou toepassing kan laat loop, en jy kan dit selfs in 'n aparte 'admin'-lêergids en naamruimte laat loop wat beveilig kan word met .
Hier is die kliëntebeheerder van 'n onlangse toepassing:
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