2011-08-21 4 views
0

단일 테이블 상속을 구현하고 있지만 라우팅에 문제가 있습니다. 저는 감마와 베타라는 두 가지 클래스를 가지고 있고, 둘 다 알파로부터 상속받습니다. 베타와 감마의 개별 컨트롤러가 아닌 컨트롤러로 Alpha를 사용하려면 다른 컨트롤러에 대한 리소스 기본값을 갖는 지침 here을 따를 수 있습니다.레일 - 단일 테이블 상속 및 라우팅

그러나 내가하고 싶은 일은 중앙 알파 컨트롤러 (예 : 편집 및 업데이트)에서 처리 할 수있는 방법과 서브 클래스 베타 및 감마 컨트롤러에서 처리하는 다른 방법을 사용하고 싶습니다. Alpha 컨트롤러를 가리키는 메소드와 Beta와 Gamma가 처리해야하는 메소드를 어떻게 지정할 수 있습니까?

+0

주소가 ../alpha/edit이거나 또는 ../beta/edit 및 ../gamma/edit가 될 수 있습니까? – link664

+0

이상적으로 나는 모든 것들을 작동시키고 싶지만 알파 컨트롤러의 편집 방법을 지적하고 싶습니다. – Kvass

답변

0

컨트롤러에서 상속을 사용하십시오. AlphaController 클래스에서 편집 및 업데이트 기능을 구현 한 다음 해당 클래스의 BetaControllerGammaController 클래스에서 상속 한 다음 다른 기능을 구현합니다.

class AlphaController < ActionController::Base 

    def edit 
     ... 
    end 

    def update 
     ... 
    end 

end 

class BetaController < AlphaController 

    def index 
     ... 
    end 

end 

이렇게하면 URL이 .../베타/수정되고 .../베타/업데이트됩니다.

뷰/알파/edit.html.erb를 부분 뷰로 사용하고 베타/감마 뷰에서 알파보기 페이지를 부분으로 렌더링하고자 할 것입니다.

개체를 하나의 테이블 Alpha에 저장하더라도 모델에는 Beta와 Gamma라는 두 개의 클래스가 있으므로 이러한 개체를 그대로 취급해야합니다.

+0

경로 파일을'resources : betas, : controller => 'alphas'등으로 수정하는 것 외에 내 경로 파일을 만지지 않습니까? – Kvass

+0

경로 파일을 터치하지 않아도됩니다. BetaController는 AlphaController에서 편집 또는 업데이트 구현을 상속받습니다. 그래야 .../beta/edit에 액세스 할 때처럼 BetaController에 대한 편집 기능을 정의한 것처럼 보입니다. – link664

+0

그래도 뷰/알파/에디트.html.erb에서 베타와 감마로 렌더링 할 단일 뷰가 있다면 어떻게 될까요? 명시 적으로 알파보기 페이지를 렌더링하는 베타 및 감마보기에서 파일을 만들지 않고이 작업을 수행 할 수 있습니까? – Kvass

관련 문제