developer tip

매개 변수에 점이있는 경로가 일치하지 않는 이유는 무엇입니까?

copycodes 2020. 10. 14. 07:57
반응형

매개 변수에 점이있는 경로가 일치하지 않는 이유는 무엇입니까?


/iGEL/contributions잘 작동하는와 같은 내 사용자를위한 경로 가 있습니다. 하지만 이제 'A.and.B.'와 같은 이름으로 등록 된 사용자가 이름에 점이 포함되어 있으므로 경로가 일치하지 않습니다.

내 경로 :

get "/:user/contributions" => 'users#contributions'

어떤 아이디어?


여기에 파란색 정보 상자가 있습니다 .

기본적으로 동적 세그먼트는 점을 허용하지 않습니다. 이는 점이 형식이 지정된 경로의 구분 기호로 사용되기 때문입니다. 동적 세그먼트 내에서 점을 사용해야하는 경우이를 재정의하는 제약 조건을 추가하십시오. 예를 들어 :id => /[^\/]+/슬래시를 제외한 모든 것을 허용합니다.

예를 들면 다음과 같습니다.

get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }

변수 세그먼트가 마지막 세그먼트 인 경우 [^\/]정규식 을 사용 하면 형식도 먹습니다. 그러한 경우 차라리 다음을 사용하십시오.

/([^\/]+?)(?=\.json|\.html|$|\/)/

다음 링크가 질문에 대한 답변 인 것 같습니다.

http://avdi.org/devblog/2010/06/18/rails-3-resource-routes-with-dots-or-how-to-make-a-ruby-developer-go-a-little-bit- 미친 것 같은/

참고 URL : https://stackoverflow.com/questions/5369654/why-do-routes-with-a-dot-in-a-parameter-fail-to-match

반응형