2

我正在使用 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
4

1 回答 1

2

我没有解决为什么一个人不能胜任另一个人的解决方案。

但是,根据 PickAxe 的书,\w它实际上是\d.

\w  [A-Za-z0-9\_]   ASCII word character
\d        [0-9]     ASCII decimal digit character

因此,与对您有用[\d\w]{40}的 没有什么不同\w{40}

于 2011-03-16T21:44:33.353 回答