2011-01-03 9 views
8

Używam this Rails Guide do utworzenia zakresu w celu utworzenia prefiksu "/ admin" dla niektórych kontrolerów.Railsy 3 Routing - Jak używać zakresu do utworzenia prefiksu administratora

Mam kontroler o nazwie Strony, chcę uzyskać do niego dostęp za pośrednictwem "/ admin/pages".

To działa świetnie, ale nadal jest dostępne za pośrednictwem "/ stron" ... Jak temu zapobiec? (Używam szyn 3)

Oto mój plik trasy:

devise_for :users 

scope "/admin" do 

    resources :pages 

    resources :contents 

end 

root :to => "index#index" 

match ':controller(/:action(/:id(.:format)))' 

Odpowiedz

7

Twój składnia nazw jest poprawna, ale trzeba usunąć catch-all mecz z ostatniej linii, ponieważ według domyślny plik routes.rb,

# This is a legacy wild controller route that's not recommended for RESTful applications. 
# Note: This route will make all actions in every controller accessible via GET requests. 

Jeśli w zapytaniu URL nie pasuje do nazw zostały zadeklarowane, to nadal będzie dopasować przeciwko catch-all na końcu trasy.

+0

Dzięki za szybką odpowiedź. Tak, na pewno. Jestem nowicjuszem, więc prawdopodobnie brakuje mi czegoś prostego. Trasy działają, ale stare trasy wciąż działają, czego nie chcę. – jyoseph

+1

Hmm ... Po prostu to wypróbowałem, więc powinno działać poprawnie. Czy zrestartowałeś serwer WWW? W trybie programowania nie powinieneś restartować, ale warto spróbować. Czy możesz umieścić swój plik routes.rb? –

+0

Zaktualizowany post z plikiem tras. Dzięki za rozdanie! (Również mam prowizje trasowane i zrestartowałem serwer) – jyoseph

3

Spróbuj to powinno działać

namespace :admin do 

    resources :pages 

end 

http://edgeguides.rubyonrails.org/routing.html

+0

To również zadziała. Jednak przestrzeń nazw różni się od zakresu. Nazwy pomocników w przestrzeni nazw administracyjnych będą poprzedzone prefiksem admin_. –

0

Spróbuj tego:

scope "/admin", as: :admin do 
    resources :pages 
end