Ограничения маршрутизации Rails 3, похоже, не соответствуют регулярному выражению - PullRequest
2 голосов
/ 16 марта 2011

Я использую 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

1 Ответ

2 голосов
/ 17 марта 2011

У меня нет решения относительно того, почему один не может работать над другим.

Однако, согласно книге PickAxe, \w на самом деле является надмножеством \d.

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

Следовательно, [\d\w]{40} ничем не отличается от \w{40}, который работает для вас.

...