rendering a 404 page with a layout

Hello,

I want my 404 and 500 pages to use the application layout, so they look like the rest of my site. So, I'm doing this

    def rescue_action_in_public(exception)         logger.error("rescue_action_in_public executed")         case exception         when ActiveRecord::RecordNotFound,             ::ActionController::UnknownAction,             ::ActionController::RoutingError             render(:file => "#{RAILS_ROOT}/public/404.html",                    :layout => 'application',                    :status => "404 Not Found")             #SystemNotifier.deliver_exception_notification(             # self, request, exception)         else             render(:file => "#{RAILS_ROOT}/public/500.html",                    :layout => 'application',                    :status => "500 Error")             #SystemNotifier.deliver_exception_notification(             # self, request, exception)         end     end

But, it only works at the root level. If you go to http://www.pawsitiveapproach.ca/foobar, then you get the main layout on the 404 page. But, if you go to http://www.pawsitiveapproach.ca/articles/foobar, you don't.

Is this just a routing issue? Here are my routes.

ActionController::Routing::Routes.draw do |map|   # With no path provided, default to the front page.   map.connect '', :controller => "main", :action => 'index'

  # Route for the admin section.   map.connect '/admin/petfacts/:action/:id', :controller => 'admin_petfact'   map.connect '/admin/testimonials/:action/:id', :controller => 'admin_testimonial'   map.connect '/admin/articles/:action/:id', :controller => 'admin_article'   map.connect '/admin/users/:action/:id', :controller => 'admin_users'

  map.connect '/admin/', :controller => 'admin', :action => 'index'

  # Map for the top-level, so we don't see 'main' in the URLs.   map.connect '/:action/:id',     :controller => "main", :requirements => { :id => /^\d+$/ }

  # Standard route.   map.connect ':controller/:action/:id' end

Also, how do you catch routing errors? I'm trying to in my exception handler above, but it's not working.

Thanks, Mike

what version of Rails are you using? I'm running edge rails right now (changeset 5533) and having a similar problem.

I was doing the same thing msoulier is doing above by trying to catch RecordNotFound and RoutingErrors with rescue_action_in_public but it seems to be broken in Edge Rails. It worked fine in 1.1.6.