2011-05-11 112 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會告訴你它的具體解釋。