2011-04-23 4 views
2

RoR을 사용하여 빌드 한 정말 간단한 앱이 있지만 경로가 변경되지 않았습니다.레일 경로 질문

그것은 기본적으로 사용자 정보를 나열하는 사이트입니다 - 나는에서 URL을 변경해야

mydomain.com/users/user-1 

업데이트

mydomain.com/user-1 

에 ..

나는 라우팅을 관리했습니다 위의 요청 :

match "/:id", :controller=>"users", :action=>"show" 

하지만 난 정말해야 할 것은 /

/users/#에 대한 모든 요청에 ​​대한 경로를 변경 내 경로가 여전히 가리 사용자를 보여, 내 모든 링크가 작동하고 있지만 :

/users/user-# 

- - 업데이트 ---

/user-id에 대한 라우팅이 이제는 완벽하게 작동하지만 지금은 라우팅의 나머지 부분과 어려움을 겪고 있습니다. http://localhost/user-1

는 그러나, 나는 기본적으로 완전히/사용자/부분을 제거 할 필요에

는 지금 탐색 할 수 있습니다. 내가 편집있을 때/페이지를 업데이트, 나는가는 결국 :

/사용자/사용자 1/편집

모두 잘 작동하지만 다음 리디렉션에 "

/사용자/사용자 1/

정말

http://localhost/user-1/edit

감사

로 리디렉션이 모두 필요

match "/:id", :to => "users#show", :as => :user 

:

match "/:id", :to => "users#show" 

당신의 루트 하단에서

답변

2

당신이 원하는 :

resources :users, :path => '/' 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 그러면 ID가없는 사용자를 찾을 수 없습니다. –

+0

레이크 루트에서 원하는 결과를 얻었습니까? 또한 로그에서 경로가 파싱되는 방식을 확인할 수 있습니까? params 해시에 id가 설정되어 있습니까? –

+0

안녕하세요, 레이크 루트가 꽤 좋아 보이네요. development.log의 결과는 다음과 같습니다 : ActiveRecord :: RecordNotFound (ID없이 페이지를 찾을 수 없습니다) : app/controllers/pages_controller.rb : 96 : find_user에 사용자가 사용자에게 속한 페이지로 이동했습니다. 죄송합니다. 어떤 혼란과 도움을 주셔서 감사합니다. –

1

몇 가지 부작용이 너무

당신은 그것의 이름을 지정해야합니다 귀하의 경로를 재 작성 할 준비가되어 있습니다 또는 @Whirlwin이 지적했듯이 GET 요청을 기본값으로 사용하는 것이 더 좋습니다.

get "/:id", :to => "users#show", :as => :user 

그래서 지금 당신이 호출 할 수

user_path(@user) 
+0

브릴리언트. 내가 나중에 시도해 보자. (내가 다시 부인과 문제를 겪지 않을 때) ... –

+0

안녕하세요. 나는 사용자로부터 user_path (@user)로 인덱스의 링크를 변경하여 라우팅 오류가 발생하는 것 같습니다 ... 경로가 일치하지 않습니다. 미안해, 내가 바보가된다면, 나는 내 길을 돌아볼 수 없다. –

+0

당신의 지수를 보여주세요. shoukd가 실제로 작동하는 경우 – fl00r

1

당신은 HTTP GET을 허용 제외 get ":id" => "users#show"이 거의 같은 것으로 판단. 희망이 작동합니다.

+0

예, 더 영리한 접근 방식이 될 것입니다. – fl00r

+0

그래, 고마워. 내가 분명하다고 생각하지 않기 때문에 약간의 질문을 편집했습니다./users/user-id에 대한 모든 요청을 루트 경로로 라우팅 할 수 있습니까? –

+0

경로에'as '옵션을 지정해야합니다. – fl00r