begin/rescue not working????

Can someone help me with the following code? I'm purposely typing in a bogus rga number, and the begin/rescue block should catch that and inform the user, right?

It does; that's not the problem.

But when I run this with a bogus number, I get the "Render and/or redirect were called multiple times in this action" error.

What am I doing wrong here?

Thanks!

def assign         @users = User.find(:all, :order => 'name')

  if request.post?     rga_number = params[:rga_number]     user_id = params[:user_id]

    begin       rga = Rga.find(params[:rga_number])     rescue       flash[:notice] = 'There is not a RGA with that number'       redirect_to :action => 'list'

You need to "return" right here, or execution continues on. That's why you're getting the error message.

You probably should rescue ActiveRecord::RecordNotFound. If a different exception were to be raised, you would never know it.

I mean to add a "return" statement:

      redirect_to :action => 'list'       return # <-- add this line   end

This has nothing to do with begin/rescue. It has everything to do with the fact that you should redirect or render precisely once per action, whereas in you original code you would end up doing a redirect in the rescue block and then again if bit below.

Fred

OK, so at a basic level, this will result in the double render error

def foo    redirect_to :action => 'bar' end

so def foo    if ...      redirect_to :action => 'bar'    end

   if ...      redirect_to :action => 'bar'    end end

will also cause errors unless the 2 conditions are mutually exclusive

You need to do something like. Either return after redirecting/rendering or do whatever you have to do to ensure that you don't do it more than once per action, for example

def foo    if ...      redirect_to :action => 'bar'      return    end

   if ...      redirect_to :action => 'bar'      return    end end

Fred