In my controller code, depending on the values in the database, I may want my user to go one of several places. But when I put more than one redirect in, it gives me the message: Render and/or redirect were called multiple times in this action. How do I do this?
on 2008-11-29 22:51
on 2008-11-29 22:59
On Nov 29, 2008, at 1:51 PM, Joe Smith wrote: > > In my controller code, depending on the values in the database, I may > want my user to go one of several places. But when I put more than > one > redirect in, it gives me the message: > > Render and/or redirect were called multiple times in this action. > > How do I do this? > -- redirect_to(some_place) and return Alternatively, store the desired destination URL and redirect once at the end of the method. stored_location = nil # ... stored_location = 'fall_down_go_boom_url' if some_criteria # ... redirect_to stored_location unless stored_location.nil?
on 2008-12-01 03:35
Hi, Maybe s.ross's explanation is enough, but just in case, I had to deal with the same problem a while back and this might be useful... redirect_to doesn't stop the rest of the code in your method/action from keeping executing so if you use it and then later on in your code there is another render/redirect_to like, for example, as a default action after an if/select then there is your problem. The solution is to use return right after you redirect_to line: redirect_to return # here the code leaves the method/action I hope this helps. Pepe