What I want to do is wrap all the scaffolded administrated pages for my
webapp into an admin folder in the controllers and views folders.
So…
/app
/controllers
/admin
issue_controller.rb
article_controller.rb
topic_controller.rb
… etc. …
/views
/admin
/issue
_form.rhtml
edit.rhtml
list.rhtml
new.rhtml
show.rhtml
/article
/topic
… etc. …
My question is how do I set up a good, clean route that can accomodate
this?
I’ve tried a few things that don’t seem to work. I thought this would
be golden, but apparently not:
map.connect ‘admin/:controller/:action/:id’
Any help would be much appreciated!
This is what I’m going with for the time being and works perfectly:
map.admin_issue ‘admin/issue/:action/:id’, :controller => ‘admin/issue’
map.admin_article ‘admin/article/:action/:id’, :controller =>
‘admin/article’
map.admin_topic ‘admin/topic/:action/:id’, :controller => ‘admin/topic’
etc.
Is there a more efficient way? Not that five or ten lines is much worse
than one, but hey… that’s part of what makes Ruby and Rails so great,
right?!

If you generate your controller as
script/generate controller admin::some_controller
It will put the some_controller into an admin directory and the class
definition will be
class Admin::SomeController < ApplicationController
I have not needed to add anything to the standard route file for this to
work as
http://localhost:3000/admin/some_controller/method
I don’t know if you can just change your admin controller class
definition
to include the Admin:: part but I don’t see why it wouldn’t work.
Daniel ----- wrote:
If you generate your controller as
script/generate controller admin::some_controller
It will put the some_controller into an admin directory and the class
definition will be
class Admin::SomeController < ApplicationController
I have not needed to add anything to the standard route file for this to
work as
http://localhost:3000/admin/some_controller/method
I don’t know if you can just change your admin controller class
definition
to include the Admin:: part but I don’t see why it wouldn’t work.
Thanks, Daniel!
I did something similar…
ruby script/generate scaffold issue admin/issue
The controller ends up looking just like you said, but perhaps when I
generate the scaffold, I should do admin::issue instead of admin/issue.