What is the proper way to have any invalid request fall back to a
specific action and controller?
That is, instead of seeing an error like those below, I would like
control to pass to my main controller action.
The error "no route found to match “/foo with {:method=>:get}” is shown
if the controller is invalid.
The error “No action responded to foo” is shown if the controller is
valid but the action isn’t.
Many thanks.
On 1 Oct 2007, at 13:16, John L. wrote:
What is the proper way to have any invalid request fall back to a
specific action and controller?
That is, instead of seeing an error like those below, I would like
control to pass to my main controller action.
I think you need to implement rescue_action. This gets called
whenever an exception is thrown, so you need to check whether the
exception corresponds to the missing action one and then do as
appropriate.
Rails 2.0 has a much nicer way of dealing with this, since you can do
class PostsController < ApplicationController
rescue_from FooError, :with => :foo_handler
protected
def foo_handler
end
end
Fred
I think you need to implement rescue_action.
Thanks Fred. Yes, this works if I put this in my application.rb:
def rescue_action(exception)
redirect_to :controller => :centre, :action => :index
end
I guess I ought to also include the code from the original rescue_action
that logs the error…