2010-03-15 13 views
5

Mam kontroler administracyjny znajdujący się w controllers/admin/admin_controller.rb Mam też kontroler stron znajduje się w controllers/admin/pages_controller.rb pages_controller.rb dziedziczy admin_controller.rb w routes.rb, mam nazw administratora jako takie:interfejs Admin w Rails

map.namespace :admin do |admin| 
    admin.resources :pages 
end 
  • Chcę admin mieć podstawową funkcjonalność CRUD w pages_controller.rb (wiem, jak to zrobić)
  • chcę index i show metod dostępnych dla użytkowników zewnętrznych.
  • Chciałbym, aby akcje pokazujące i indeksujące używały oddzielnych widoków, ale ten sam kod.

Pytania:

  • należy utworzyć nową pages_controller dla front-end lub udostępnianie metod index i show?
  • Jeżeli akcje, jak bym wyświetlić odrębne poglądy w zależności od tego, czy adres URL jest /admin/pages lub /pages
  • Jeśli akcja, należy umieścić pages_controller w /controllers/admin (gdzie jest teraz) lub po prostu w /controllers?

Dziękuję bardzo.

Odpowiedz

3

Chciałbym zachować je oddzielnie. Chociaż logika może być taka sama, teraz są w rzeczywistości dwie różne rzeczy. Trzymanie ich osobno pomoże ci w zapewnieniu bezpieczeństwa i pozwoli ci wprowadzić zmiany później, jeśli zajdzie taka potrzeba, na przykład możesz zdecydować, kiedy ładować stronę, zapytanie administracyjne powinno również: załączyć coś innego itd. W trasach możesz dodać:

map.resources :pages, :only => [:index, :show] 

Twoje zdanie wyświetli dla każdej pary akcji/kontrolera, np. jeden w widoku/admin/pages i jeden w/view/pages. Jeśli te dwa elementy są duplikowane, wyodrębnij je w częściowe i wyrenderuj z obu.

+0

dziękuję bardzo! –