2011-05-11 135 views
3

我想要一个名为“门户”的名称空间控制器。Rails 3路由和名称空间

在此将嵌套资源,如公司和产品。

我想喜欢路线:

/portal/:company_id/product/:id工作

我能得到

/portal/company/:company_id/product/:id工作,但想消除 '公司' 在URL

。希望清楚了。请记住,我需要命名空间模块门户存在。

+0

当您使用“匹配”时,有什么问题? – apneadiving 2011-05-11 14:25:51

回答

7

我想你可以使用scope来实现你想要的。也许是这样的:

namespace "portal" do 
    scope ":company_id" do 
    resources :products 
    end 
end 

,将产生以下途径:

portal_products GET /portal/:company_id/products(.:format)   {:action=>"index", :controller=>"portal/products"} 
        POST /portal/:company_id/products(.:format)   {:action=>"create", :controller=>"portal/products"} 
new_portal_product GET /portal/:company_id/products/new(.:format)  {:action=>"new", :controller=>"portal/products"} 
edit_portal_product GET /portal/:company_id/products/:id/edit(.:format) {:action=>"edit", :controller=>"portal/products"} 
    portal_product GET /portal/:company_id/products/:id(.:format)  {:action=>"show", :controller=>"portal/products"} 
        PUT /portal/:company_id/products/:id(.:format)  {:action=>"update", :controller=>"portal/products"} 
        DELETE /portal/:company_id/products/:id(.:format)  {:action=>"destroy", :controller=>"portal/products"} 

编辑:不小心使用的资源,而不是资源。现在修复。

+0

完美!谢谢 – robzolkos 2011-05-11 22:29:33

0

您可以自定义的路由你想近一切,如果你直接拼出来,像这样:

match '/portal/:company_id/product/:id', :to => 'companies_products#show' 

:to部分指定控制器和动作的使用,你有什么,应该匹配你的路线现在。如果你不确定那是什么,rake routes会告诉你它的具体解释。