1

필자는 개발 과정에서 중첩 된 리소스가 그만한 가치가 없다고 생각하고 있습니다.노력 가치가있는 깊이있는 중첩 된 다형성 리소스입니까?

resources :first-level do 
    resources :comments 
    resources :second-level do 
     resources :comments  
     resources :first-child do 
     resources :comments 
     end 
     resources :second-child do 
     resources :comments 
     end 
     resources :third-child do 
     resources :comments 
     end 
    end 
    end 

키커는 의견이 다른 자원에 대한 다형성 있다는 것입니다 :

나는 이런 식으로 뭔가가있다. 제 의도는 ~/first-level/34/comments, ~/first-level/34/second-level/56/third-level/comments 등 깨끗한 URL을 찾는 것입니다.

지금까지 문제는 중첩 된 다형성 경로는 슬픔을 유발합니다. 나는 Ryan Bates Railkeasts를 예로 들었다. 예를 들어 나는 그것이 잘 작동 첫 번째 수준에 polymorphic_path를 사용하려고 내가 얻는 경우 :

polymorphic_path([@commentable, comments]) => ~/first-level/34/comments 

하지만 ~/first-level/34/second-level/23에서 동일한 코드와 함께 실패합니다

undefined method 'second-level_comment_path' for #<#<Class:0x007fcc4acfbe58>:0x007fcc4ae73d08>하지만 난 내 경로를 볼 때 실제라는 경로는 first-level_second-level_comment입니다. 나는 수동으로 그 기본적으로 별칭을 first-level_second-level_comment 만들려고했지만 그 중 하나를 만들 수없는 것.

누군가가 명백한 오류를 지적 할 수있는 경우가 아니라면이 접근법 (http://weblog.jamisbuck.org/2007/2/5/nesting-resources)으로 기울어 져 있으며 이들을 중첩하지 않습니다. 나는 빵집을 탐색 할 수있는 스타일 네비게이션을 가지고 있으므로 검색은 충분해야하며, URL을 보면 좀 더 다루기 힘들게 느껴진다.

답변

1

중첩 된 리소스를 사용하면 하위 수준에 액세스 할 때 모든 상위 수준을 지정해야합니다. 그렇지 않으면 Rails는 자녀를 어떻게 키울 지 모릅니다. 그래서,이 같은 첫 level_second-level_comment 및 공급 제 1 레벨 및 제 2 레벨의 값을 사용해야합니다

first-level_second-level_comments_path(@my_first_level, @my_second_level) 

렌더링됩니다

~/first-level/34/second-level/23/comments 

편집 :

I 돈 점진적으로 경로를 구축해야하는 이유를 알 수 없습니다.

당신은 항상 first_level 의견 경로를 구축 할 수 있습니다 :

first-level_comments_path(@my_first_level) 

은 첫 번째 수준 내의 모든 초 수준의

~/first-level/34/comments 

또는 목록을 렌더링 : 주어진 1 세대를위한 (두 번째 레벨의 index 액션 레벨)

first-level_second-levels_path(@my_first_level) 

를 렌더링
~/first-level/34/second-levels 
+0

팁 주셔서 감사합니다. 나는 내 자원을 비포장하기 시작했고 둥지로 고생하는 것이 어려웠다는 것을 신속하게 발견했습니다. 주어진 중첩 된 리소스를 사용하면 경로의 계층 구조, 즉 first_second_third_etc_path를 쉽게 재구성 할 수 있습니다. –