2015-09-23 25 views
0

我在社交媒體網站上工作,我遇到了路由問題。按用戶名路由到配置文件頁面

每個用戶都有像Facebook個人資料頁面,這是我用root:

get 'profile(/:id)' => 'profiles#show' 

所以,當URL是這樣的:www.sitename.com/profile/1它打開的頁面屬於id爲1的用戶。但是,我還希望用戶能夠在不使用/ profile /的情況下在url中使用他們的用戶名。所以它會像Facebook一樣。

例如:www.sitename.com/handsomeboy69

我怎麼能做到這一點的路由?因爲,rails可能認爲在URL中傳遞的用戶名是頁面名稱。

謝謝

+0

可能的重複[用戶名在URL與路徑路徑](http://stackoverflow.com/questions/2269885/username-in-url-with-rails-routes) –

回答

0

我修好了。這是我使用的路線:我用這個說法

get ':username' => 'profiles#show' 

在控制器:

if params.has_key?(:username) 
    @profile = User.find_by_username(params[:username]) 
elsif params.has_key?(:id) 
    @profile = User.find(params[:id]) 
else 

end 

else語句是空的,我會經常用到的區域打印出錯誤消息,配置文件無法找到。

最重要的部分是這個路由應該在文件的末尾。

+1

你可能也想考慮使用friendly_id寶石。 https://github.com/norman/friendly_id – moeabdol