2011-01-03 5 views
8

this Rails Guide을 사용하여 일부 컨트롤러에 대해 "/ admin"접두어를 만들려면 범위를 만듭니다.레일 3 라우팅 - 범위를 사용하여 관리자 접두사를 만드는 방법

페이지가라는 컨트롤러가있어서 "/ admin/pages"를 통해 액세스하려고합니다.

scope "/admin" do 
    resources :pages 
end 

잘 작동하지만 여전히 "/ 페이지"를 통해 액세스 할 수 있습니다. 어떻게 방지합니까?

(나는 레일 3를 사용하고있어) 여기 내 경로 파일입니다 :

devise_for :users 

scope "/admin" do 

    resources :pages 

    resources :contents 

end 

root :to => "index#index" 

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

답변

7

네임 스페이스에 대한 귀하의 구문이 올바른지,하지만 당신은에 따라 때문에 마지막 줄에서 캐치 경기를 제거해야 기본 routes.rb 파일, 요청 된 URL이 선언 한 네임 스페이스와 일치하지 않는

# 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. 

경우, 여전히 끝에 포괄 경로에 대해 일치합니다.

+0

감사합니다. 그래, 그래. 나는 레일스 뉴비라서 무언가 간단한 것을 놓친다. 경로는 작동하지만 오래된 경로는 여전히 작동하며 이는 내가 원하지 않는 것입니다. – jyoseph

+1

흠 ... 방금 시도 했으므로 제대로 작동해야합니다. 웹 서버를 다시 시작 했습니까? 개발 모드에서는 다시 시작할 필요는 없지만 한 번해볼 가치가 있습니다. routes.rb 파일을 게시 할 수 있습니까? –

+0

경로 파일로 소식을 업데이트했습니다. 손을 가져 주셔서 감사합니다! (또한, 경로를 레이크하고 서버를 다시 시작했습니다.) – jyoseph

3

는이

namespace :admin do 

    resources :pages 

end 

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

+0

이것도 작동합니다. 그러나 네임 스페이스는 범위와 다릅니다. admin 네임 스페이스의 도우미 이름 앞에는 admin_ 접두어가 붙습니다. –

0

이 시도 작동합니다보십시오 : 빠른 답변

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