为什么参数中的一个点的路由不匹配?

我有我的用户像/iGEL/contributions ,这工作正常的路线。 但现在用户注册了“A.and.B.”这个名字,现在路由不匹配,因为这个名字包含点。

我的路线:

 get "/:user/contributions" => 'users#contributions' 

有任何想法吗?

在这里看到蓝色的信息框:

默认情况下dynamic段不接受点 – 这是因为点用作格式化路由的分隔符。 如果需要在dynamic段中使用点,请添加一个覆盖此点的约束,例如:id => /[^\/]+/允许除斜杠之外的任何内容。

例如:

 get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ } 

如果你的variables段是最后一个,那么使用[^\/]正则expression式也会使用这个格式。 在这种情况下,宁可使用:

 /([^\/]+?)(?=\.json|\.html|$|\/)/