我有一条适合我的用户的路线/iGEL/contributions
,效果很好。但是,现在用户注册的名称类似于“ A.B.”,但由于名称中包含点,因此路由不匹配。
我的路线:
get "/:user/contributions" => 'users#contributions'
有任何想法吗?
Answers:
请在此处查看蓝色信息框:
默认情况下,动态细分不接受点-这是因为点被用作格式化路由的分隔符。如果您需要在动态段中使用点,请添加一个覆盖该点的约束-例如,
:id => /[^\/]+/
允许除斜杠之外的任何内容。
例如,将是:
get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }
/.*/
也可以,我对正则表达式不太了解,无法分辨出差异。
format: false, defaults: {format: 'html'}
为让Rails停止尝试将点段视为指示内容类型的文件扩展名。
如果您的变量段是最后一个段,则使用[^\/]
正则表达式也将占用格式。在这种情况下,请使用:
/([^\/]+?)(?=\.json|\.html|$|\/)/