잠시 동안이 질문에 대한 답을 찾기 위해 노력하고, ... 그것은 새로운 하나를 물어 가치가 있었다레일 3 다형성 라우팅
을 결정 나는이 다음과 같이 정의 다형성있는 여러 모델 : class Transport
, class Transport::Car < Transport
, class Transport::Plane < Transport
난 Transport::PlaneController
, Transport
모든 유형 (모든 공간 Transport
이하) 대응하는 컨트롤러가 예를 Transport::CarController
후 염기 TransportController
하고있다.
내가 다른 Transport
행동에 대한 라우팅을 만드는 방법을 알아 내야 할 ...
- 내가 (이것이의 일환으로 수행해야합니다 얼마나 많은
Transport
하위 클래스 사전을 모르는 데이터베이스 호출을 통한 초기화 프로그램). Transport
마다 두 개의 공유 컨트롤러 동작이 있습니다 (#board
및#depart
). 이러한 메서드는TransportController
안에 있어야하며, 이는 전송 유형에 관계없이 동일한 동작을 수행하고 동일한 뷰를 표시하기 때문입니다.- 다른
Transport
유형은 고유 한 조치의 다른 구현을 가질 수 있습니다. 예를 들어 자동차와 비행기의 경우#choose_seat
은 다른 제한 조건과 다른보기에 따라 다르지만 동작은 동일합니다. - 다른
Transport
유형에는 고유 한 조치가 부여됩니다. 예를 들어Transport::PlaneController
은#landing_gear_up
동작을 가져야하지만Transport::CarController
의 경우에는 의미가 없습니다. 나는이 느낌# for an action landing_gear_up only inside plane match '/transport/plane/landing_gear_up', :controller => "Transport::PlaneController", :action => "landing_gear_up" # for an action on every transport type that are handled differently match '/transport/:type/choose_seat', :controller => "Transport::<type>Controller", :action => "choose_seat" # for the actions that are handled commonly across every type of transport match '/transport/:type/board', :to => "transport#board" match '/transport/:type/depart', :to => "transport#depart"
"동적 세그먼트"로 할 수 있어야하지만 그것이 제대로 작동하려면 얻을 관리 할 수 없습니다 :
내가 좋아할만한 것은 같은 라우팅 파일입니다. 어떤 제안?