2009-03-28 16 views
7

Pracuję nad moją pierwszą aplikacją Rails i chcę utworzyć sekcję admin.Rails Application Admin Section

Czy chcę, aby moje widoki i kontrolery były całkowicie oddzielne (tj. W oddzielnych katalogach) dla sekcji administracyjnej i reszty witryny?

Jak zorganizować widoki/kontrolery w niestandardowych katalogach (jak skonfigurować routing)?

Odpowiedz

5

Mogłeś także utrzymuj aplikacje i kontrolery w ich zwykłych miejscach i używaj filtrów Rails, aby kontrolować dostęp. Oto, czego szukam tutaj.

Jeśli masz AWDWR Book poręczny, flip do Chap11 Zadanie F Administrivia

  • Zasadniczo zdefiniować metodę autoryzacji w aplikacji \ kontrolerów \ environment.rb, który sprawdza zezwolenia przekierowuje do strony logowania, jeśli nie zalogowany et.all
  • kontrolerów Mark chcesz ograniczyć dostęp do z before_filter s

.

class AdminController < ApplicationController 
    before_filter :authorize 
    # ... the rest of the code 
end 

to przechwyci wszystkie połączenia do działań określonych w AdminController i zmusić ich, aby przejść przez zezwolić

+0

Może to skomplikować routing? Podoba mi się również pomysł posiadania osobnych katalogów tylko po to, aby zachować porządek. – GeekJock

+0

Wcale nie. Piękno polega na tym, że nie musisz definiować (lub nawet mieszać) różnych tras. Wszystko idzie przez jedną ścieżkę, autoryzacja before_filter zapewnia, że ​​tylko autoryzowane żądania przechodzą do chronionych działań. Jest to podejście "deklaratywne". – Gishu

+2

To podejście jest w porządku, ale nie zawsze jest odpowiednie, szczególnie jeśli chcesz mieć prawie CMS jak sekcja administratora, w przeciwieństwie do kilku zasobów administracyjnych zaśmieconych przez twoją aplikację. – nitecoder

8

Aby tworzyć kontrolerów admin:

script/generate controller admin/articles 

Następnie w pliku routes.rb

map.resource :admin do |admin| 
    admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles" 
end 

Można by wtedy uzyskać dostęp do adresu URL wskazujący na to:

<%= link_to "Articles Admin", admin_articles_path %> 
5
map.namespace :admin do |admin| 
    admin.register :controller => 'main', :action => 'register' 
    admin.login, :controller => 'main', action => 'login' 
    # ... 
end 

ten sposób można obszaru nazw rzeczy, dodać to do innych komentarzy tutaj o upoważniających rzeczy a ty "odejdź. Zajrzyj do wtyczki restful_authentication, aby wykonać zarządzanie użytkownikami, o wiele szybciej i łatwiej niż toczyć własne.

Powyższa procedura zakłada, że ​​kontrolery i ich widoki znajdują się w podkatalogu o nazwie admin, co według mnie jest tym, czego potrzebujesz.