Here is the book to start with:
http://www.pragprog.com/titles/rails2
This has a section on REST and Rails that will explain things to you.
I would also highly recommend the Peepcode screencast on RESTful
Rails:
This line:
format.xml { head 200 } or can also be written format.xml { head :ok }
is used to inform a non-browser request (say from curl) that the PUT
to the existing forum resource was successful. It does not need to
return the XML of the object because the client already know what that
is, because it just PUT it to the service. So a HEAD response saying
OK (200) is all that is required.
Ryan,
format.xml is useless unless you want to return an XML file containing
whatever is being returned in the action. You dont need that line, or the
responds_to if you’re only going to have one thing it responds_to.
Well yes, format.xml is useless unless you want to return XML for the
action. But, as it turns out, returning XML for actions is VERY
useful.
I don’t know why format.xml is included and if someone could inform us why,
that would be great 
You ask why, I ask why not? It is becoming more and more common for
web applications to talk to each other. This is generally accomplished
using XML to exchange data between applications. Having the scaffold
generators include support for XML responses to RESTful actions is
extremely useful. It allows the developer to create their REST API
right along side their normal site development. Having this “baked-in”
support for REST services goes a long way toward a standard where
developers can begin to assume other applications support services in
a conventional way.
The basic idea here is that it’s time to stop assuming the requester
is a web page (browser). There are a number of other ways to issues
requests to a web application in this modern Web 2.0 era. HTML is
certainly not the preferred response format for, say, terminal request
via curl. In something like that you don’t want to sift through a
bunch of HTML layout code to get to your data. XML is a great way to
supply the data without the presentation. JSON is another great way to
do that.
Example:
def show
@forum = Forum.find(params[:id])
respond_to do |fomat|
format.html # use the normal erb template to generate the HTML
response
format.iphone # use the erb template with optimized presentation
for the iPhone
format.xml { render :xml => @forum.to_xml }
format.json { render :json => @forum.to_json }
end
end
curl http://localhost:3000/forums/1.xml => XML response
curl http://localhost:3000/forums/1.json => JSON response