How to handle exception in format.xml

I am developing an API for my application.
Here is the standard show method.

def show
@city = City.find(params[:id], :include => :state)

respond_to do |format|
  format.html
  format.xml
end

end

For a browser based action if the params[:id] is missing then
ActiveRecord::RecordNotFound exception is raised which I let Rails
handle.
This results in public/404.html.

However in API I need to catch the exception and then I need to return
an
xml with the error message. What is the best way to handle that. Any
example will be helpful

Right now even if I catch the exception then after catching the
exception I
need to process two different ways for html and xml. Secondly I need to
know
if I am processing html or xml. How do I find out if I am handing html
or
xml. Is there a utility method?

  • Neeraj

Look at the bottom of the create or update methods in the controller.
Both have examples of handling errors that should serve as examples.

The update scenario doesn’t handle if
@city = City.find(params[:id]) throws ActiveRecrod::RecordNotFound
exception.

I want to return an xml stating that no record was found for the given
id.

I can catch the exception but am not sure what is the best way to handle
this case when I must return an xml response every single time.

On Apr 8, 2008, at 2:39 , Raj S. wrote:

The update scenario doesn’t handle if
@city = City.find(params[:id]) throws ActiveRecrod::RecordNotFound
exception.

I want to return an xml stating that no record was found for the given
id.

I can catch the exception but am not sure what is the best way to
handle
this case when I must return an xml response every single time.

If that’s kind of a global rule you can easily program a catchall with
rescue_from in Rails 2, respond_to is available in the handler as well.

– fxn