Ruby on rails路由匹配用户名

我确信有一个简单的解决方案,但我似乎无法找到它。

我想匹配以下动态用户名:

/users/dymanicUsername 

这将如何看待routes.rb

谢谢你的帮助。

阿利斯特,

要做到这一点,只需覆盖模型中的to_param即可。 例如 :

 #users.rb def to_param self.username end 

你很快就会遇到一些问题:

  • 与现有路线发生冲突。 例如,用户名不应该是“新的”,得到了吗?
  • 为了在控制器中获取用户,你应该在你的模型中创建一个方法(这就是我所做的,可能不是最好的解决方案),如self.find_for_controller(username)
  • 您的用户名应仅包含启用了url的字符(忘记重音符号,ponctuations等…)。 对此的解决方案是使用第二个属性名称username_urlized ,当然应该是唯一的并且不与其他路由冲突

也许更多的问题:)

此外,如果你想要twitter(yoursite.com/dynamicUserName)之类的东西,请在routes.rb中执行以下操作:

 resources :users, :path=>'' do 

这是2006年的一个很好的解释,看起来很适合Rails 2.3。*: http : //garrickvanburen.com/archive/using-names-in-rails-routes-instead-of-ids

我看到的主要问题是,您不仅要确保Marcel提到的所有上述内容,而且要确保名称是唯一的。 即在迁移中将名称放在:unique => true

对于我刚刚升级到的rails3,你会以不同的方式进行路由。 例如, map.connectmatch替换。