April 2009
Intermediate to advanced
479 pages
12h 55m
English
Responding to a request for a given resource in XML format is usually done without the need for a Builder template. For example, in the ArticlesController you had:
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @articles }
end
The highlighted line will invoke the to_xml method and render the collection of Article objects in the default XML representation. In this case, @articles will contain only one record because you set the pagination to one article per page. Reaching for /articles.xml will provide the following (depending on your content, of course):
<?xml version="1.0" encoding="UTF-8"?>
<articles type="array">
<article>
<body>Hi there!
If you don't know what %{color:red}Rails% is, you can read more about it on the
"official website":http://rubyonrails.org and then buy Antonio Cangiano's
book. It's *highly recommended*. ;-)
By the way, did you know that Ruby on Rails(TM) is a trademark of "David
Heinemeier Hansson":http://loudthinking.com?</book>
<created-at type="datetime">2008-07-16T18:56:33-04:00</created-at>
<id type="integer">4</id>
<published type="boolean">true</published>
<published-at type="datetime">2008-07-19T23:52:00-04:00</published-at>
<title>Oh hi!</title>
<updated-at type="datetime">2008-07-17T12:21:48-04:00</updated-at>
</article>
</articles>
A great example of when this approach is not sufficient is the publication of an RSS (from version 2.0 this stands for Really Simple Syndication) ...