2012-03-11 3 views
3

STI 모델이 있고 파생 모델의 기본 뷰를 다시 사용하고자합니다. 예를 들어, 교사 < 사람이있는 경우 교사의 시각에 사람의보기 필드가 포함되기를 바랍니다.레일 STI 및 뷰 재사용

이 방법이 있습니까?

답변

1

질문을 이해하고 있다면 ... 기본적으로 사용 가능합니다. STI를 사용할 때, 파생 된 각 모델은 기본 클래스의 모든 필드에 액세스 할 수 있습니다. (테이블에있는 필드) 부분을 렌더링 할 때

예를 들어

, 당신은 단순히 정상으로 객체를 전달할 수 :

= render :partial => 'person', :object => @teacher 

위의 코드는 여러 가지 방법으로 수행하지만, 난 그냥 해요 할 수있다 설명하려고합니다.

+0

이 방법을 사용할 때 레이아웃을 제어 할 수있는 방법이 있습니까? 이 작업을 수행 할 때 각 항목의 끝에 편집/삭제 링크가 생기고 파생 된 필드를 추가 할 기회가 없습니다 (처음에 필드를 넣지 않으려는 경우). – user1080584

+0

물론입니다. 이를 수행하는 몇 가지 다른 방법이 있습니다. 나는 뷰 로직에 대한 열렬한 팬이 아니지만, 그 사람의 종류를 확인하는 if 문을 가질 수 있습니다 : "person.kind_of? (Teacher)" –

0

교사 및 개인 컨트롤러가있는 경우 교사보기 내부의 사람들로부터보기 (부분, 템플릿)를 렌더링 할 수 있습니다.

당신은 선 아래 내부 교사를 작성할 수

당신이 _teacher.html.erb_person.html.erb 파셜이있는 경우

= render :partial => 'persons/<PARTIAL NAME>' 

= render :template => 'persons/<TEMPLATE>' 

= render :file => 'persons/new' 
0

render 당신이 교사 한 내부의 일부 사람을 render 수 있도록 적절한 부분을 사용 전망 객체로 render을 호출하면 오른쪽 부분이 렌더링됩니다.

# @aldo is a Person, this will render _person.html.erb 
render @aldo 

# @mr_brown si a Teacher, this will render _teacher.html.erb 
render @mr_brown 

교사는이 경우 정보가있는 사람을 부분적으로 렌더링하기 때문에.

+0

이 방법을 사용할 때 레이아웃을 제어 할 수있는 방법이 있습니까? ? 이 작업을 수행 할 때 각 항목의 끝에 편집/삭제 링크가 생기고 파생 된 필드를 추가 할 기회가 없습니다 (처음에 필드를 넣지 않으려는 경우). – user1080584

+0

죄송합니다. 무슨 뜻인지 잘 모르겠다. 두 부분으로 나누어서 선생님 한 명에게 그 사람을 렌더링 하시겠습니까? 그 사람의 들판은 보이지 않습니까? –