2011-09-08 40 views
0

假設以下路徑是合法和解決:如何處理不可預知的路線?

http://test.local/wizards/home 
http://test.local/wizards/wizardfest2012/dates 
http://test.local/dragons/ 
http://test.local/dragons/blog/stop-slaying-us 
http://test.local/ 

這是(如果你不能告訴)的CMS包括博客,所以子彈會由用戶生成的。我有一些路由首先處理保留的命名空間(例如admin)。

我假設用戶生成的路由需要路由到Page控制器 - 但是,我不認爲實用地向routes.rb添加一行是有效的。我的問題是,如何處理參數的第一部分(在本例中爲wizardsdragons)以從模型中獲取正確的信息?

這裏是我的一個想法 - 斯普利特(不知)蛞蝓(再次的第一部分,wizardsdragons並通過塞的其餘部分(例如,/wizardfest2012/dates)的模型來獲取相關內容

。 ?

上最有效的方法,這樣做有什麼想法

+0

什麼樣的CMS對不同的頁面有不同的模型?這是所有相同的模型。也許如果你發佈了一個你想做的事情的不太人爲的例子? – meagar

+0

頁面控制器,頁面模型。不確定不同的模型來自哪裏。 – userrrrr

+0

根據你自己的話來說,將龍/嚮導分解爲「模型」。 – meagar

回答

0

我不知道我是否理解你想要什麼來實現的,但也許這是你想要什麼:

constraints :camp => /wizards|dragons/ do 
    match ':camp/home' => "pages#home" 
    match ':camp/blog/:title' => "pages#blog" 
    # ...and all the routes with known components 
    match ':camp/*other' => "pages#other" 
end 

您可以創建一個before_filter它將識別params[:camp]並準備必要的模型或任何需要的。

other操作將收到字符串"wizardfest2012/dates"作爲params[:other]。我希望這是你所需要的。

"Rails Routing from the Outside In"指南可能值得一讀,除非您已經閱讀過。