2012-01-06 18 views
1

私のようなXMLファイル出力を作成する必要があります。Railsを使用してXMLを生成するにはどうすればよいですか?

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 

しかし、出力は以下のように出てくる::私は私のコントローラに次のコードを書いた

<data> 
    <hour>0</hour> 
    <count>8</count> 
</data> 
. 
. 
<data> 
    <hour>23</hour> 
    <count>1</count> 
</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を実行したときに、@data(配列)をXML表現に変換しようとしていることです。この場合、これはあなたが望むものではありません。

は、あなたのデータムクラスに#to_xmlメソッドを定義して、あなたのような何かを行うことができます:すべてのオブジェクトのための#to_xmlメソッドを呼び出します

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

をし、その後、あなたは改行で各エントリを分離し、それらを連結よ。

あなたがよく構造化されたXMLデータを望むなら(あなたの例ではそうではないかもしれません)、jessecurryが示唆するようにBuilderのようなものを使うべきです。

関連する問題