Rails 3 contraintes de routage ne semblent pas correspondre correctement l'expression rationnelle

StackOverflow https://stackoverflow.com/questions/5330076

  •  26-10-2019
  •  | 
  •  

Question

J'utilise Rails 3.0.5 et j'ai installé un itinéraire en utilisant une contrainte regex. Il travaillait sur Rails 2.3.5, mais il ne fonctionne pas dans Rails 3. Les regards de route comme ceci:

get '/:version_id' => 'pastes#show', :constraints => { :version_id => /[\d\w]{40}/ }

Il ne fonctionne pas du tout. Cependant, les travaux suivants:

get '/:version_id' => 'pastes#show', :constraints => { :version_id => /.{40}/ }

get '/:version_id' => 'pastes#show', :constraints => { :version_id => /\w{40}/ }

get '/:version_id' => 'pastes#show'

Y at-il quelque chose de mal avec la façon dont les poignées Rails [] correspondant? ou suis-je en train de faire quelque chose de mal?

version_id ressemble généralement quelque chose comme ceci:

816616001d7ce848944a9e0d71a5a22d3b546943
Était-ce utile?

La solution

Je n'ai pas une solution à laquelle on ne peut pas travailler sur l'autre.

Cependant, selon le livre Pioche, \w est en fait une surcouche de \d.

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

Par conséquent, [\d\w]{40} ne diffère pas de \w{40} qui fonctionne pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top