2011-03-15 50 views
1

我從來沒有在我的rails 3應用程序中使用xml生成器,但需要啓動。一個rails 3應用程序的新手xml生成器問題

我們的一個控制器方法是由遠程系統調用的,它只返回xml。

在我們富控制器,我們有

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

在我們的意見/富/ return_some_data。 xml.erb我們

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

我想用XML構建,而不是手動創建XML和使用ERB處理變量插入。

我認爲等效的構建器文件看起來像這樣?

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

另外,我會重命名文件return_some_data和我將它放入哪個文件夾?另外,我是否需要'require'或'include'來開始使用xml構建器,還是內置ruby?

回答

5

認爲應該將其命名爲.builder具有擴展.builder eg. views/foo/return_some_data.builder

,自動軌道創建您XmlMarkup中 的實例也是你.builder模板是純Ruby沒有必要再培訓局

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 2011-03-15 08:58:02

+0

只需複製粘貼此代碼並運行即可。它很容易。 – Ashish 2011-03-15 11:06:19

+0

謝謝,但我確實需要知道如何從erb遷移到添加構建器視圖,這就是我的問題所在。 – jpwynn 2011-03-17 17:34:02