2011-03-16 2 views
2

레일즈 3.0.5를 사용하고 있으며 정규 표현식 제약 조건을 사용하여 경로를 설정했습니다. 그것은 레일 2.3.5에서 작동하는 데 사용하지만,이 경로는 다음과 같습니다 레일 3에서 작동하지 않습니다 :레일 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' 

레일스 처리 방식에 문제가 있습니까? 아니면 내가 잘못하고있는거야?

816616001d7ce848944a9e0d71a5a22d3b546943 
+0

이 선언은 어딘가에 중첩되어 있습니까? 아니면 최상위 선언입니까? 나는 당신의 모범을 어떻게 부릅니까? localhost : 3000/816616001d7ce848944a9e0d71a5a22d3b546943 - 작동합니까? –

답변

2

내가 하나가 다른 이상 작동하지 않을 수 있습니다 이유에 대한 해결책을 가지고 있지 않습니다

VERSION_ID은 일반적으로 다음과 같이 보입니다.

그러나 PickAxe 서적에 따르면 \w은 실제로는 \d의 수퍼 세트입니다.

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

따라서, [\d\w]{40}는 당신을 위해 작동하는 \w{40} 다르지 않습니다.

관련 문제