매우 흥미로운 시나리오가 있습니다 :레일 3 중첩 된 라우팅
전역 이벤트 용 컨트롤러와 회사 별 이벤트 용 컨트롤러를 두 번 지정했습니다. 루트에서는, 다음과 같이 지정됩니다
resources :companies do
resources :events
end
resources: events
실행 레이크 노선 내가 루트는 생성되는 것을 볼 수 있습니다
events GET /events(.:format) events#index
company_events GET /companies/:company_id/events(.:format) events#index
두 경로가 동일한 컨트롤러 (글로벌 한)로 라우팅 것 같다 .. . 나는 이런 식으로 뭔가 들어가 회사/컨트롤러에서 두 번째 컨트롤러가 : 위의 해당 컨트롤러에
class Companies::EventsController < ApplicationController
# stuff
end
그것은 결코 경로에 상관없이 내가 company_evens_pat를 사용하는지 여부 h (@ 회사). 항상 다른 하나에 간다. 당신이 필요로하는 경우
가def index
if params[:company_id]
@events = Company.find(params[:company_id]).events
else
@events = Events.all
end
end
당신이를 지정할 수 있지만 : 은 내가 이런 일을하는 것이 좋습니다, 위에서 언급 한 바와 같이, 나는 현재 3.2
내부에있는 회사 :: EventsController을 넣어 당신의 컨트롤러 폴더 안에 폴더를 생성 별도의 컨트롤러, 그것은 단지 당신이 그 이벤트를 표시하기 위해 글로벌 이벤트 컨트롤러의 인덱스 작업에 params [: company_id]를 던져서 건조하게 유지하는 것처럼 보입니다. –
경로에 따라 예상대로 작동합니다. 둘 다 EventsController와 index 메서드로 연결됩니다. 따라야 할 경로에 따라 다른 동작이 필요한 경우 단일 컨트롤러에서 수행 할 수 있습니다. –