I think I know what’s going on here.
Think of redirect_to like a render() call that just sends a response which causes the browser to request the page you passed to redirect_to.
There are 3 request/response cycles involved here. You are putting something in the flash in one action which then renders a page (cycle 1), then the user clicks a link on that page to an action which redirects (cycle 2). That causes the browser to request, and the server to deliver, another page (cycle 3). The values you put in the flash during cycle 1 will be intact during cycle 2 but they’re gone in cycle 3.
Is this what’s goin’ down?
In cycle 2, before calling redirect_to, call flash.keep . . you can pass it a key from the hash if you only want to preserve part of the flash hash.