Interface Admin dans Rails
-
20-09-2019 - |
Question
J'ai un contrôleur d'administration situé dans controllers/admin/admin_controller.rb
J'ai aussi un contrôleur de pages situé dans controllers/admin/pages_controller.rb
pages_controller.rb
hérite de admin_controller.rb
en routes.rb, j'ai un espace de noms d'administration en tant que tel:
map.namespace :admin do |admin|
admin.resources :pages
end
- Je veux l'administrateur ont des fonctionnalités de base CRUD dans
pages_controller.rb
(je sais comment faire) - Je veux que les méthodes de
index
etshow
soient disponibles aux utilisateurs front-end - Je voudrais que les actions montrent et l'index pour utiliser des vues séparées, mais le même code.
Questions:
- Dois-je créer une nouvelle
pages_controller
pour le front-end, ou partager les méthodesindex
etshow
? - Si la part, comment pourrais-je afficher des vues différentes selon que l'URL est
/admin/pages
ou/pages
- Si l'action, dois-je placer
pages_controller
dans/controllers/admin
(où il est maintenant) ou juste à/controllers
?
Merci beaucoup.
La solution
Je garderais les séparer. Bien que la logique peut-être même qu'ils sont maintenant en vigueur deux choses différentes. les garder séparés vous aidera à la sécurité et vous permettre de faire des changements plus tard si nécessaire, par exemple, vous pouvez décider lors du chargement d'une page la requête d'administration devrait également: inclure quelque chose d'autre, etc. Dans les itinéraires que vous pouvez ajouter:
map.resources :pages, :only => [:index, :show]
Votre volonté a des vues pour chaque action / paire de contrôleurs, par exemple une vue en / admin / pages et un dans le répertoire / vue / pages. Si ces deux dupliquez code, en extraire et de les rendre partials à la fois.