I'm migrating my app from Rails 2.3.8 to Rails 3.0.0 . But I've problems in converting my routes.rb which looks like this:
ActionController::Routing::Routes.draw do |map|
map.namespace(:admin) do |admin| admin.resources :participants admin.resources :communities, :has_many => :participants admin.resources :organizations end
map.resources :memberships, :only => [:index]
begin RessourceData.all.each do |r| map.resources r.ressource.to_sym, :path_prefix => '/'+r.namespace, :name_prefix => r.namespace+'_', :controller => 'messages', :only => [:index, :show, :create, :update, :destroy], :collection => { :fifo => [:get, :post], :lifo => [:get, :post] } end rescue ActiveRecord::StatementInvalid Rails.logger.info "DB error: #{$!}" end
end
With this code I'm able to do dynamic routing: the dynamic routes where build out of the RessourceData model. I've tried to convert these routes into Rails3 routes like this:
Ecs2::Application.routes.draw do
namespace :admin do resources :participants resources :communities, :has_many => :participants resources :organizations resources :ressources end resources :memberships, :only => [:index]
begin RessourceData.all.each do |r| namespace r.namespace.to_sym do resources r.ressource.to_sym, :controller => 'messages', :only => [:index, :show, :create, :update, :destroy] do collection do get 'fifo' post 'fifo' get 'lifo' post 'lifo' end end end end rescue ActiveRecord::StatementInvalid Rails.logger.info "DB error: #{$!}" end
But generated routes out of the RessourceData model aren't correct, because the responsible controller is generated like "r.namespace/ r.ressource" instead of just "messages", e.g.
"vip/exercises" instead of simply "messages"
Any suggestions ?