我正在使用Rails 3.0.5并且我使用正则表达式约束设置了路由。它曾用于Rails 2.3.5,但它在Rails 3中不起作用。路由如下:
get '/:version_id' => 'pastes#show', :constraints => { :version_id => /[\d\w]{40}/ }
根本不起作用。但是,以下工作:
get '/:version_id' => 'pastes#show', :constraints => { :version_id => /.{40}/ }
get '/:version_id' => 'pastes#show', :constraints => { :version_id => /\w{40}/ }
get '/:version_id' => 'pastes#show'
Rails处理[]匹配的方式有问题吗?或者我做错了什么?
version_id通常看起来像这样:
816616001d7ce848944a9e0d71a5a22d3b546943
答案 0 :(得分:2)
我没有解决为什么一个人可能无法工作的原因。
但是,根据PickAxe的书,\w
实际上是\d
的超集。
\w [A-Za-z0-9\_] ASCII word character
\d [0-9] ASCII decimal digit character
因此,[\d\w]{40}
与适合您的\w{40}
没有区别。