Namespace routing error

I'm not sure if I'm doing something wrong or there is a problem with
namespaces and routes in 3.0.0.beta version. After creating new
application I've generated new controller with

script/rails generate controller Admin::Dashboard show

and added:

namespace :admin do
  resource :dashboard
end

to routes.rb, but http://localhost:3000/admin/dashboard resulted in
routing error: No route matches "/admin/dashboard". Maybe I'm wrong
but it looks like problem is in
mapper.rb line 391:

def controller
  options[:controller] || plural
end

where pluralized version of controller is returned so even:

rake routes

returns correct list of routes (in singular form) final target has
pluralized version (admin/dashboards) and routing error occurs. Now
I'm wondering whether I've wrongly defined route or controller method
should be:

def controller
  options[:controller] || singular
end

resource :session do
    get :jumpin, :as => 'session'
    post :forgot_password, :as => 'session'
  end

I think I have seen this issue. In my code I have had to use the :as option to get the generated helper methods to work. Without the :as option I can still hit the actions, but it is just the _url|path helpers that are not working. I'm swamped and have not made a ticket yet.

- Ken

Rails expects the controller name to be pluralized even when using
singular resources. The rails3 beta is wrongly reporting Routing
Errors when anything goes wrong with the controller. See
https://rails.lighthouseapp.com/projects/8994/tickets/3862-cryptic-routing-error-when-applicationcontroller-has-a-bug.

If you are right that Rails expect the controller name to be
pluralized then 'rake routes' give wrong result. Because with route:

namespace :admin do
  resource :dashboard
end

routes are:

                    GET /admin/dashboard(.:format)
{:controller=>"admin/dashboards", :action=>"show"}
                     POST /admin/dashboard(.:format)
{:controller=>"admin/dashboards", :action=>"create"}
                     PUT /admin/dashboard(.:format)
{:controller=>"admin/dashboards", :action=>"update"}
     admin_dashboard DELETE /admin/dashboard(.:format)
{:controller=>"admin/dashboards", :action=>"destroy"}
new_admin_dashboard GET /admin/dashboard/new(.:format)
{:controller=>"admin/dashboards", :action=>"new"}
edit_admin_dashboard GET /admin/dashboard/edit(.:format)
{:controller=>"admin/dashboards", :action=>"edit"}

so path is in singular form and controller is expected to be in
plural. On the other hand with:

namespace :admin do
  resources :dashboard
end

both paths and controller are in plural:

                     GET /admin/dashboards(.:format)
{:controller=>"admin/dashboards", :action=>"index"}
    admin_dashboards POST /admin/dashboards(.:format)
{:controller=>"admin/dashboards", :action=>"create"}
new_admin_dashboard GET /admin/dashboards/new(.:format)
{:controller=>"admin/dashboards", :action=>"new"}
                     GET /admin/dashboards/:id(.:format)
{:controller=>"admin/dashboards", :action=>"show"}
                     PUT /admin/dashboards/:id(.:format)
{:controller=>"admin/dashboards", :action=>"update"}
     admin_dashboard DELETE /admin/dashboards/:id(.:format)
{:controller=>"admin/dashboards", :action=>"destroy"}
edit_admin_dashboard GET /admin/dashboards/:id/edit(.:format)
{:controller=>"admin/dashboards", :action=>"edit"}

I guess I'm missing something but I still cannot figure out what :frowning: