2013-07-23 26 views
0

我們在應用程序中有一些命名空間控制器。在Rails路由中以相反順序指定slu 012

這是很容易做到這一點:

/store/pants 
/store/shirts/2 

在多租戶環境中,我們要做到這一點:

/:tenant_slug/hats 
/:tenant_slug/hats/3 
/jims-discount-apparel/gloves 

,並將這些路由映射到命名空間的控制器:

Store::HatsController 
Store::GlovesController 

我們不是要去使用/store/:tenant_slug/hats

我想要以tenant_slug開頭的任何路由映射到名稱空間Store中的相應控制器。

我們有幾個控制器根據Store,並希望避免列出所有(帽子,手套,襯衫,褲子等......)在routes.rb

我正在嘗試使用match,但我不太清楚。

回答

1

這不工作?

get '/:tenant_slug/hats', to: 'store/hats#index', as: 'hats'

,則會生成下列路線,而params [:tenant_slug]將包含URI的那部分:

hats GET /:tenant_slug/hats(.:format) store/hats#index

+0

這可能工作,但我試圖避免列出所有可能性(帽子,手套,襯衫)routes.rb – gmoore

+0

如果你不遵循Rails約定,你將不得不手寫所有的東西 – Benj

+0

或者一個替代方案是使用子域,並且:tenant_slug將是子域,域名部分在您的域名之前。這一切都取決於您的應用需求 – Benj