2011-03-05 8 views
3

레일 3 질문이 있습니다. 내 사용자의 컨트롤러 쇼 페이지에 app.com/people/username URL이 있어야합니다. 경로라우팅 오류 : username in url

resources :users 
match "/people/:username" => 'users#show', :as => :profile 

사용자 이름이로 시작하면 그것은 작동하지만

"." (점) 나는 오류가 있습니다

어떤 경로 "/people/.G"를 일치하지

그리고

<%= link_to current_user.username, profile_path(current_user.username) %> 

예외 제기 :

없음 경로 일치 {: 컨트롤러 => "users", : action => "show", : username => ". G"}

내 영어로 죄송합니다. 에스!

+0

여기에 link_to 경로로 무엇을 사용하고 있습니까? 어떻게 "username"매개 변수를 포맷합니까? – goddamnyouryan

답변

1

레일 루트에서 기본적으로 .으로 시작한다고 생각하지 않습니다. 당신은 위의 정규식은 사용자 이름 ., a-z, A-Z, 0-9 and _ 유효한 문자와 일치합니다

match "/people/:username" => 'users#show', :as => :profile, :username => /[\.a-zA-Z0-9_]+/ 

과 같은 작업을 수행 할 수 있습니다.

+0

좋아, 이제 예상대로 작동, tyvm! – Deku

+0

/[\\\-a-AA-Z0-9\-\_]+/]는 가능한 모든 문자를 허용하는 데 사용되는 정규 표현식입니다. 그리고 그것은 나를 위해 일하고 있습니다. – Anand