【问题标题】:Routing to profile page by username按用户名路由到个人资料页面
【发布时间】:2015-09-23 21:55:36
【问题描述】:

我在一个社交媒体网站上工作,但我遇到了路由问题。

每个用户都有一个像 facebook 这样的个人资料页面,这是我使用的根:

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

所以,当 URL 是这样的:www.sitename.com/profile/1 时,它会打开属于 id 为 1 的用户的页面。但是,我也希望用户能够在没有 / 的情况下在 url 中使用他们的用户名轮廓/。所以它会像 facebook。

例如:www.sitename.com/handsomeboy69

如何在路由中做到这一点?因为,rails 可能会认为 URL 中传递的用户名是页面名称。

谢谢

【问题讨论】:

标签: ruby-on-rails social-networking


【解决方案1】:

我修好了。这是我使用的路线:

  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语句为空,我将使用该区域打印出错误消息,指出无法找到配置文件。

最重要的部分是这个路由应该在文件的末尾。

【讨论】:

  • 您可能还想考虑使用friendly_id gem。 github.com/norman/friendly_id
  • @moeabdol :使用此答案的方法,您是否不需要编写一些额外的逻辑来确保没有人创建与您的任何可能存在且有效的路由匹配的用户名(当前以及之后未来更新),例如:/users/products/items?那么friendly_id 会阻止这个问题吗?
猜你喜欢
  • 2016-04-06
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多