我有以下路线:
get 'users/:user_id/:name', to: 'profiles#show',
:constraints => { :name => /[a-zA-Z0-9_]+$/ }, as: 'user_profile'
产生错误:
Regexp anchor characters are not allowed in routing requirements: /[a-zA-Z0-9_]+$/
所以我得到^字符是不允许的,但不确定是什么字符产生了这个特定的路由错误。
答案 0 :(得分:14)
在正则表达式中,我们有两个锚:
^
$
尝试从模式中移除$
,你应该好好去......
答案 1 :(得分:14)
正则表达式的锚点是^
和$
,但它们在这里没有任何实现。 "(Y)ou don’t need to use anchors because all routes are anchored at the start."
所以约束:
:constraints => { :name => /[a-zA-Z0-9_]+/ }
将执行您想要的操作 - 确保名称由一个或多个这些字符组成,而不是其他任何内容。顺便说一句,你可以简化正则表达式:
:constraints => { :name => /\w+/ }