2009-07-25 4 views
3

두 가지 모델 - ltests 및 sub_tests가있는 레일즈 애플리케이션에 루비가 있습니다. ltest는 'has_many'과 sub_tests를 연관시킵니다. ltests의 show 메소드는 다음과 같습니다.Ruby on Rails - has_many 연관을 사용하여 xml 모델로 렌더링하는 방법

respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @ltest } 
end 

ltest 개체를 렌더링합니다. 그러나 ltestest에 속하는 sub_test는 렌더링되지 않습니다.

어떻게하면됩니까?

<ltest> 
.... 
    <sub_test> 
    ... 
    </sub_test> 
    <sub_test> 
    ... 
    </sub_test> 
</ltest> 

나는이 같은 뷰를 사용하여 렌더링을 시도 :

을하지만이 두 대신 XML 문서 ltests에 포함 sub_tests 하나를 생성합니다.

어떻게 할 수 있습니까?

답변

1

보기에서이 작업을 수행하면 show.xml.erb 트릭을 만들었습니다.

<%= @ltest.to_xml :include => [ :sub_tests ]%> 

그러나 sub_tests (test_logs 오류) 내부에 중첩 된 객체는 빠지지.

5

레일이 여러 단계의 중첩을 처리 할 수 ​​있습니다. 이것은 내가 끝내었던 코드입니다.

<%= @ltest.to_xml(:include => { 
     :test_group => { :include => [ :user ]}, 
     :sub_tests => { :include => { 
      :attachments => {}, 
      :errors => {}, 
      :test_bugs => {}, 
     } }, 
     :attachments => {}, 
     :errors => {}, 
     :test_bugs => {}, 
     :test_nodes => { :include => { 
      :node => { :include => [ :networks ]}, 
      :attachments => {}, 
     }} 
    }) %> 
13

이 경우 빌더 또는 erb를 사용할 필요가 없습니다.

format.xml { render :xml => @ltest.to_xml(:include => :sub_tests) } 
+0

덕분에 ... 나에게 t 도움 당신은 당신이 좋아 (I 레일 2.3.4 할 수있는 최소한) 컨트롤러에 원하는 것을 얻을 수 있습니다 ! –

3

깊은 중첩 된 개체를 렌더링하려면 :

render :xml => @record.to_xml(:include => {:groups => {:include => {:questions => {:include => :items}}}})