Forum: Ruby on Rails Routing question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
thelorax (Guest)
on 2007-03-16 15:04
(Received via mailing list)
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.
Fredrik (Guest)
on 2007-03-16 15:56
(Received via mailing list)
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
javier ramirez (Guest)
on 2007-03-16 16:11
(Received via mailing list)
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!!
thelorax (Guest)
on 2007-03-16 20:20
(Received via mailing list)
Thanks.  Both the Admin::Controller and the :requirements option look
like they might work for me.
This topic is locked and can not be replied to.