2011-01-03 12 views
8

Estoy usando this Rails Guide para crear un alcance con el fin de crear un prefijo "/ admin" para algunos controladores.Enrutamiento de Rails 3: cómo usar el alcance para crear el prefijo de administrador

Así que tengo un controlador llamado Pages, quiero acceder a él a través de "/ admin/pages".

scope "/admin" do 
    resources :pages 
end 

Eso funciona muy bien, pero todavía se puede acceder a través de "/ páginas" ... ¿Cómo lo evito? (Estoy usando Rails 3)

Aquí está mi archivo de rutas:

devise_for :users 

scope "/admin" do 

    resources :pages 

    resources :contents 

end 

root :to => "index#index" 

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

Respuesta

7

Su sintaxis para el espacio de nombres es correcta, pero hay que quitar el cajón de sastre partido de la última línea, ya que, según routes.rb el archivo por defecto,

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

Si la URL solicitada no coincide con el espacio de nombres que ha declarado, todavía partido contra el cajón de sastre de ruta al final.

+0

Gracias por la respuesta rápida. Sí, estoy seguro. Soy un recién llegado, así que probablemente me esté perdiendo algo simple. Las rutas funcionan, pero las rutas antiguas todavía funcionan, que es lo que no quiero. – jyoseph

+1

Hmm ... Acabo de probarlo, por lo que debería funcionar correctamente tal como está. ¿Has reiniciado el servidor web? En el modo de desarrollo, no debería tener que reiniciar, pero vale la pena intentarlo. ¿Puedes publicar tu archivo routes.rb? –

+0

Publicación actualizada con el archivo de rutas. Gracias por la mano! (Además, he rastreado rutas y reiniciado el servidor) – jyoseph

3

Prueba esto debería funcionar

namespace :admin do 

    resources :pages 

end 

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

+0

Esto funcionará también. Sin embargo, un espacio de nombre es diferente de un alcance. Los nombres de ayudantes en el espacio de nombres de administración tienen el prefijo admin_. –

0

Prueba esto:

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