2010-06-11 3 views
0

나는 레일 2를 사용하고 I는 다음과 같이 중첩 된 자원이 있습니다 - university_categories - 대학 - 연구 - 교수 - 의견 REST는 자원 이름이없는 중첩 된 경로 2 개를 레일링합니까?

내가 편안하고 경로를 사용하려면,하지만 난 모든 원하지 않는를 그 URL에 난장판. 예 : /대학/: university_id/연구/: study_id/교수 :/교수/교수 : /교수 :/교수 : _ 교수 ID : (나는 별도로 교수지도를 작성하지 않기 때문에 ' 이 경로가 존재해서는 안되기 때문에 이것과/교수/: 교수 _id 사이의 혼란이 될 수 있습니다.) 다시 말하지만, RESTful 리소스/라우트를 사용하고 싶습니다 ... 또한 ID 대신 슬러그를 사용하고 있습니다. 연구를위한 새우는 고유하지 않으며 다른 것은 고유합니다. 또한 다 대 다 관계가 없습니다 (따라서 고유 한 교수의 슬러그를 아는 경우 어떤 학문 및 대학 및 카테고리에 속하는지 알지만이 정보가 URI에 포함되기를 바랍니다. SEO를 위해 가능하다면, 또한 새로운 교수를 추가 할 때 필요합니다). 그러나 나는 편집과 같은 "관리자"URIs에 대한 얕은 중첩을 사용하고 싶습니다. (슬러그가 유일한 문제가 아니기 때문에 여기의 문제는 여기에 유의하십시오.) ...

사용 방법에 대한 팁도 있습니다. URL을 도우미 그래서 내가 미래에 경로를 변경하면 내가 너무 많이 수정하지 않아도됩니다 ...

고마워요.

답변

0

은이 기능을 제공합니다 map.resources 아닌 것 같아,하지만 당신은 다른 행동 (검증되지 않은)

map.show_professor "/professors/:university_id/:study_id/:professor_id", :controller => "professors", :action => "show" 

다음과 유사한 경로 같은 것을 사용할 수 있습니다.

더 나은 솔루션이있을 수 있습니다, 그러나 map.resources 그것은/자원 /의 형태로 가정 보이기 때문에 이것은, 내가 그 일을 할 찾을 수있는 유일한 방법입니다 (: RESOURCE_ID)

당신이 할 수있는 이 방법으로 REST를 사용하면 바로 가기를 사용하는 대신 모든 작업을 직접 수행해야합니다.

편집의 예를 들어, 당신은 단지 내 경로가 이전에했던 방법이다 그

map.edit_professor "/professors/:id/edit", :controller => "professors", :action => "edit" 
+0

사용할 수 있습니다,하지만 난 조금 정리하고 싶었다. 그래서 그것을 할 수있는 더 깨끗한 방법이 있다면 궁금 해서요,하지만 당신의 대답을 주셔서 감사합니다! – mrbrdo

+0

지금 당장 수동으로하거나 Rails 자체에 넣어야한다고 생각합니다. – alternative

관련 문제