2014-10-17 35 views
1

在Rails中有很多關於路由的好信息。我必須錯過一些東西,但我似乎無法找到一個Rails應用程序的好例子,它允許動態定義用戶特定的路線。Rails中用戶定義的路由

例如,我的應用程序託管在:

www.thing.com 

...並提供了用戶生成的內容。

我想給用戶一個選項來定義一個後綴,讓他們共享一個有點自定義的URL到他們的內容。例如,如果用戶「喬」產生一些汽車信息,他們可能要在讓它即時拍攝通過joescars:

www.thing.com/joescars 

也許以後他們決定他們想爲它出在「carsbyjoe」在:

www.thing.com/carsbyjoe 

我可以處理限制什麼後綴是有效的。有沒有Rails的方式來編纂這種動態路由?

+1

你試過類似'get'uri /:user_route'=>'custom_pages#custom_controller_method''。然後你可以在控制器中使用param [:user_route]來獲取你想要的內容。 – Jeremiah 2014-10-17 20:43:51

+0

只是要記住,使用通用'/:uri'會很糟糕,因爲每一個隨機url都會觸及你的數據庫,並且每一個404都會首先對數據庫進行測試,對於我來說,我會嘗試將它限制到某些東西像'/ pages /:uri'例如 – 2014-10-17 21:18:59

回答

3

有一種方法可以做到這一點。在您的config/routes文件中,添加一條說明get '/:user_route' => 'somecontroller#someaction'的路線。你必須把它放在最底部,因爲路線是從上到下匹配的,這將匹配/users之類的東西,或者你可能想要在其他地方定向的其他路線。

然後,在您的控制器中,您可以訪問params[:user_route]以顯示適當的內容。根據您的需要,有多種方法可將此自定義內容存儲在數據庫中。您可能有一個代表這些自定義路線的模型,如CustomRoute.find_by_route(params[:user_route]),或者每個用戶可能會有自定義路線,因此您可以執行User.find_by_route(params[:user_route]).custom_page,並且每個User有一個custom_page

+0

啊。我懂了。非常感謝。 – 2014-10-17 21:42:03