The document discusses using the XML Builder gem to generate XML in a legacy format when the default to_xml method does not meet needs. It shows how to create a presenter object to encapsulate the logic for building the XML, and use XML Builder in the view to generate the XML according to the legacy format, providing an alternative to to_xml for complex or custom XML generation needs.
3. class NewsItemsController < ApplicationController
def index
@news_items = NewsItem.all
respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @news_items.to_xml }
end
end
def show
@news_item = NewsItem.find(params[:id])
respond_to do |format|
format.html # show.rhtml
format.xml { render :xml => @news_item.to_xml }
end
end
end
10. class NewsletterController < ApplicationController
def show
@newsletter = Newsletter.new
respond_to do |format|
format.xml { render :action => quot;show.xml.builderquot;,
:layout => false }
end
end
end
16. class Newsletter
attr_reader :articles, :feature_article
def initialize
@articles = NewsItem.all_except_for_feature
end
def feature_article
@feature_article = NewsItem.feature
end
# Potential for more useful methods here
end
18. hopefully you can imagine how this technique
could be useful in more complex examples
19. Summary
REST needs a bit of help sometimes
XML Builder useful for producing XML in legacy format
Presenter object can help encapsulate what is required in the XML
markup