2013-02-27 5 views
1

목표는 GET이 같은 URL을 생성, REST API입니다 :만들기 사용자 정의 경로

/manager/someID/report 
example: /manager/2/report 
나는 이런 식으로 할 경우는 레이크 노선에 표시 할 수 있습니다

:

get 'manager/:id/report', to: 'report#show' 

그러나 일부 웹 로그에서는 비 숙련 된 개발자가 경로를 작성하는 방법을 읽었습니다. 그리고 더 좋은 방법이 그래서 같은 방식으로 작업 중첩 된 자원을 얻기 위해 책상 위에 내 머리를 두드리는하고 "중첩 된 자원을"사용하는 것처럼 보인다 ...하지만 성공

이 내가 지금까지 쓴 것입니다 :

resources :manager, only: [:show] do 
    resources :report, only: [:show], controller: 'report' do 
    member do 
     ## WAT ?! 
    end 
    end 
    end 

답변

1

먼저 "비 숙련자"와 같은 경로를 사용하는 경우 다른 블로그를 읽는 것이 좋습니다.

당신이 제안한 것이 비표준 RESTful 경로라고 생각하면 실제로 좋을 수도 있으며 경우에 따라서는 더 좋을 수도 있습니다. 다른 방법을 원할 경우 몇 가지 옵션이 있습니다. 나는 어느 쪽이 다른 쪽보다 옳다고 생각하지 않지만, 수직적 인 공간을 덜 차지하기 때문에 우선적으로 선호한다.

resources :manager, only: [:show] do 
    get 'report' => 'report#show', on: :member 
end 

또는

resources :manager, only: [:show] do 
    member do 
    get 'report' => 'report#show' 
    end 
end 
+0

당신이 가진, 사람 중첩의 방법이며 내가 가진 짝수 번째 비 작동 하나,이 정말 관계 belongs_to하는 has_many이 물건 의미 ? Article and Comments ... 내 경우 엔 "관리자"와 "보고"의 성격이 전혀 그다지 좋아하지 않기 때문에. 그래도 중첩 된 방식으로 실행하려면 여전히 실용적일까요? 또는 나의 자신의 1 개의 정기선 길은 좋았다? –

+1

나는 그 질문에 옳고 그른 대답이 있는지 확신하지 못합니다. 나는 레일즈를 잠시 사용 해왔다. 필자가 만들 수있는 유일한 변화는 보고서 컨트롤러 이름을 복수화하여 레일스 규칙을 따르는 것입니다. –