2011-01-21 5 views
0

자신과 일대일로 많은 관계가있는 Person (예 : 부모 -> 하위)이 있다고 가정 해 보겠습니다. 주어진 @personshow.html.erb을 렌더링하면 부모에게 show.html.erb 렌더링 결과를 포함 시키길 원합니다. 레일스에서 ​​동작을 재귀 적으로 렌더링하는 방법은 무엇입니까?

는 기본적으로 나는 수동으로

<%= render :file => "/persons/1.html.erb" %>

을하고

<%= render @person.person %>

실제로 시도에 대한 올바른 구문을 싶습니다 그리고 그것은 작동하지 않았다. 누군가가 render의 구문을 이해하도록 도와 줄 수 있습니까? 감사.

(. 나는 실제로 더 복잡한 모델을 가지고 내가 SVG 파일을 렌더링하고, HTML이 아닌 참고)

답변

0

넣어라는 파일 _person.html.erb에서 show.html.erb의 내용의 대부분 다음 show.html.erb이 있습니다 _person.html.erb 대신 @person의

<%= render :partial => 'person', :locals => {:person => @person} %> 

를 사용하여 사람을

(파일 이름은 밑줄로 시작합니다.)

+0

<% if person.parent %><% = render ... %><% end %> – Satya

+0

감사합니다. 나는 이것에 대해 내 자신 만의,하지만 그때 나는 무한 루프에 갇혀지고 있었다. 재귀 코드를'@ person '대신'person'을 사용하는 부분으로 옮기는 것은 이것을 해결합니다. – Saucerful

0

관련된 사람들의 배열을 가져 오기 위해 Person 모델에서 메소드를 생성하십시오. 부모 : 컨트롤러

def parents(person) 
    Person.find(:all, :conditions => ... 
end 

가 부모 페치 : 인칭 시점에서

@parents = Person.parents(someone) 

(show.html.erb)를 부모 어레이 루프 매개 변수로 부분보기로 각각 전달한다

<% @parents.each do |parent| %> 
    <%= render :partial => 'info', :locals => { :person => parent } %> 
<% end %> 

부분보기 만들기 : _info.html.erb, person은 개인 레코드를 저장하는 로컬 변수이며 부분 형식 내에서 액세스 할 수 있습니다.

관련 문제