2011-03-15 25 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