2012-01-06 44 views
1

我需要创建一个XML文件输出,如:如何使用Rails生成XML?

<data> 
    <hour>0</hour> 
    <count>8</count> 
</data> 
. 
. 
<data> 
    <hour>23</hour> 
    <count>1</count> 
</data> 

我写在我的控制器下面的代码:

for @k in (0..23) 
    @data.push(Datum.new(@k,@freq[@k])); 
end 

class Datum 
    def initialize(hour, count) 
    @hour = hour 
    @count = count 
    end 
end 

render xml:@data 

但输出出来,如:

tweet-densities-controller-data type="array"> 
    <tweet-densities-controller-datum type="TweetDensitiesController::Datum"># 
    TweetDensitiesController::Datum:0xacbddc4></tweet-densities-controller-datum> 

回答

0

这里发生的是当你做render :xml => @data Rails试图将@data(这是一个数组)转换成它的XML表示。在这种情况下,这不是你想要的。

您基准类中定义#to_xml方法,然后你可以这样做:

@data.map(&:to_xml).join("\n") 

它将调用这个方法#to_xml每一个对象,那么你就会将它们连接起来,由一个换行符分隔每个条目。

如果你想要结构良好的XML数据(看起来不像你的例子),那么你应该使用像jessecurry所建议的Builder之类的东西。