为什么参数中的一个点的路由不匹配?
我有我的用户像/iGEL/contributions
,这工作正常的路线。 但现在用户注册了“A.and.B.”这个名字,现在路由不匹配,因为这个名字包含点。
我的路线:
get "/:user/contributions" => 'users#contributions'
有任何想法吗?
在这里看到蓝色的信息框:
默认情况下dynamic段不接受点 – 这是因为点用作格式化路由的分隔符。 如果需要在dynamic段中使用点,请添加一个覆盖此点的约束,例如
:id => /[^\/]+/
允许除斜杠之外的任何内容。
例如:
get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }
如果你的variables段是最后一个,那么使用[^\/]
正则expression式也会使用这个格式。 在这种情况下,宁可使用:
/([^\/]+?)(?=\.json|\.html|$|\/)/