rails 2.3.x中的范围等效?

时间:2010-11-22 19:45:34

标签: ruby-on-rails

是否有办法在admin范围下生成一组路线,而不必创建新的物理目录(如namespace要求您)。

我知道在Rails 3中路由映射器上有一个scope方法,这看起来像我想要的那样,但显然它在Rails 2.3.x中不存在

我的目标是建立一条这样的路线:"/admin/products"映射到"app/controllers/products_controller "app/controllers/admin/products_controller"

有没有办法在Rails 2.3.x中实现这一目标?

2 个答案:

答案 0 :(得分:4)

当然,您需要使用:name_prefix:path_prefix来获得您想要的内容:

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

将产生路线:

    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"}

答案 1 :(得分:2)

似乎没有详细记录,但namespace实际上是with_options的一个非常简单的包装器。它设置了:path_prefix:name_prefix:namespace选项,我相信您只想要第一个,所以:

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

我正在通过阅读代码来解决这个问题。看起来:name_prefix用于为命名路由提供前缀,而:namespace用于实际查看子目录。