2015-09-23 26 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