2012-01-06 53 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之類的東西。