Well, as you have thought, the Ruby on Rails people have solved this problem way before now. The solution is to wisely use flash.now and flash. Here are a few tips:
Use flash.now when you are flashing:
- on ajax requests
- before a call to render :action => :my_action, as often found in failure cases of create and update actions
- before a redirect_to, often found in the success cases of create and update actions
In general, use flash.now when you don't want to carry over the flash to the next http request and flash otherwise. The FlashHash class has more detail on this at the ruby on rails API page. Hope this helps you to get rid of those annoying and often embarrassing out-of-context flash messages!