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.connect
由match
替换。