2

Rails 3.0.5を使用しており、正規表現制約を使用してルートを設定しました。以前はRails2.3.5で機能していましたが、Rails3では機能しません。ルートは次のようになります。

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 に答える