2010-11-22 10 views
1

Y at-il un moyen de générer un groupe de routes sous admin portée sans devoir créer un nouveau répertoire physique (comme namespace vous oblige à).scope équivalent dans les rails 2.3.x?

Je sais que dans Rails 3 il existe une méthode scope sur la route cartographe, et cela semble faire ce que je veux, mais apparemment il n'existe pas dans Rails 2.3.x

Mon but est d'avoir un itinéraire comme celui-ci: "/admin/products" carte à "app/controllers/products_controller, pas"app/controllers/admin/products_controller".

Y at-il un moyen d'accomplir cela dans Rails 2.3.x?

Répondre

4

Bien sûr, vous devez utiliser :name_prefix et :path_prefix pour obtenir ce que vous voulez:

ActionController::Routing::Routes.draw do |map| 
    map.with_options :name_prefix => 'admin_', :path_prefix => 'admin' do |admin| 
    admin.resources :products 
    end 
end 

donnera des itinéraires:

admin_products GET /admin/products(.:format)   {:controller=>"products", :action=>"index"} 
        POST /admin/products(.:format)   {:controller=>"products", :action=>"create"} 
new_admin_product GET /admin/products/new(.:format)  {:controller=>"products", :action=>"new"} 
edit_admin_product GET /admin/products/:id/edit(.:format) {:controller=>"products", :action=>"edit"} 
    admin_product GET /admin/products/:id(.:format)  {:controller=>"products", :action=>"show"} 
        PUT /admin/products/:id(.:format)  {:controller=>"products", :action=>"update"} 
        DELETE /admin/products/:id(.:format)  {:controller=>"products", :action=>"destroy"} 
2

Il ne semble pas être bien documenté, mais namespace est en fait un emballage très simple pour with_options. Il fixe les :path_prefix, :name_prefix et :namespace options, dont je crois que vous ne voulez que le premier, donc:

map.with_options :path_prefix => 'admin/' do |admin| 
    admin.connect ':controller/:action' 
end 

Je vais à travers cette lecture du code. Il semble que :name_prefix est utilisé pour donner un préfixe aux routes nommées, et :namespace est utilisé pour regarder dans les sous-répertoires.

Questions connexes