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.
D3785c0a7c441a47da20227c83be4cc5?d=identicon&s=25 thelorax (Guest)
on 2007-03-16 14: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.
F148ec0cad8ea241b1cfd80e7ec8a7df?d=identicon&s=25 Fredrik (Guest)
on 2007-03-16 14: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
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2007-03-16 15: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!!
D3785c0a7c441a47da20227c83be4cc5?d=identicon&s=25 thelorax (Guest)
on 2007-03-16 19: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.