Routing question


#1

Hello. I’m adding an admin section to my site and have configured
routing along the following lines:

map.connect ‘admin/:controller/:action/:id’

The above works fine. However, if I have controller ‘A’, it is still
accessible from http://mysite.com/A due to the
default :controller/:action/:id route. I’d rather not have two URIs
mapped to the same page and am wondering if there is a way to exclude
a controller from a route or to alter the path to
http://mysite.com/admin/A
when a user visits http://mysite.com/A. As of now, my only solution
is to remove the :controller/:action/:id route, but this means I would
have to map routes for every controller I want accessible at my
webroot which is kind of a pain and doesn’t seem very rails like.

Thanks.


#2

I don’t know the solution to what you are asking about excluding
controllers.

I think the namespacing of controllers has been discussed before and
some people like it some people don’t.

Name your admin controllers Admin::AdminTestController and place them
in admin/admin_test_controller.rb

script/generate controller Admin::AdminTestController

This can then be accessed with admin/admin_test without modifying the
stock routes.

That should solve your problem if I read your post correctly.

I’m assuming you have some sort of authentication too, that could be
used to restrict access to the controllers except for admin users.

Fredrik


#3

thelorax wrote:

The above works fine. However, if I have controller ‘A’, it is still
accessible from http://mysite.com/A due to the
default :controller/:action/:id route. I’d rather not have two URIs
mapped to the same page and am wondering if there is a way to exclude
a controller from a route or to alter the path to http://mysite.com/admin/A
when a user visits http://mysite.com/A.
you can use the :requirements param of the route, so you can match
:controller against a regexp. If the pattern is not matched, then the
route will not be recognized for that request

regards,

javier ramirez

Estamos de estreno… si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!


#4

Thanks. Both the Admin::Controller and the :requirements option look
like they might work for me.