2011-03-15 6 views
1

난 내 빌 3 애플 리케이션에 XML 빌더를 사용한 적이 있지만 시작해야합니다.초보자 xml 빌더 레일 3 애플 리케이션에 대한 질문

컨트롤러 메서드 중 하나가 원격 시스템에서 호출되고 xml 만 반환됩니다. 우리 foo는 컨트롤러에서

우리는 우리의 견해/foo는/return_some_data에

def return_some_data 
    @thename = "JOHN DOE" 
     respond_to do |format| 
     format.xml 
     end 
    end 

있습니다. xml.erb 우리는

<Response> 
    <Name>The name is <%= @thename %></Name> 
</Response> 

내가 수동으로 XML을 생성하고 변수 삽입을 처리하기 위해 ERB를 사용하는 대신 XML 빌더를 사용하고자합니다.

필자는 동등한 빌더 파일이 이렇게 보일 것이라고 생각합니까?

xml.Response{ 
    xml.Name(The name is @thename) 
} 

또한 무슨 일이 난 파일 return_some_data의 이름을 바꿀 것입니다 어느 폴더 나에 넣을까요? 또한, XML 빌더를 사용하기 위해 'require'또는 'include'가 필요합니까? 아니면 루비가 내장되어 있습니까?

답변

5

뷰를 .builder 이름으로 eg. views/foo/return_some_data.builder

.builder 확장을 가져야한다, 자동 레일 당신에게 XmlMarkup 의 인스턴스를 생성 또한 .builder 템플릿은 순수 루비 필요없는 ERB 있습니다

xml.instruct! 
xml.Response do 
    xml.Name @name 
end 
0

xml 빌더를 사용했습니다. 다음 코드 스 니펫은 까다로운 xml 빌드를 다룹니다. 당신이 컨트롤러에서

, 당신은 파셜을 만들 필요가없는이 경우

require 'builder' 

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

def get_xml_data 
    xml = Builder::XmlMarkup.new#(:target=>$stdout, :indent=>2) 
    xml.instruct! :xml, :version => "1.0", :encoding => "US-ASCII" 
    xml.declare! :DOCTYPE, :html, :PUBLIC, "-//W3C//DTD XHTML 1.0 Strict//EN", 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" 
    favorites = { 
    'candy' => 'Neccos', 'novel' => 'Empire of the Sun', 'holiday' => 'Easter' 
    } 

    @xml = xml.favorites do 
    favorites.each do | name, choice | 
    xml.favorite(choice, :item => name) 
    end 
    end 
end 

. 코어 라이브러리가 함께 제공되므로 설치할 필요가 없습니다.

+0

그 것이다 기본 지식을 이해하자마자 매우 도움이 될 것입니다. 시작하기 위해 기본 view.xml.erb를 빌더로 번역하는 가장 간단한 사례를 이해하고 싶습니다. 그런 다음 기본 케이스를 이해하면 예를 들어 당신이 보여준 것처럼 더 정교한 것. – jpwynn

+0

이 코드를 복사하여 붙여 넣기 만하면됩니다. 그것의 아주 쉬운. – Ashish

+0

고맙습니다.하지만 정말로 제 생각에는 erb에서 빌더보기를 추가하는 방법을 알아야합니다. – jpwynn

관련 문제