Rails: redirect_to with :error, but flash[:error] empty

Ruby on-Rails-3

Ruby on-Rails-3 Problem Overview


I'm trying to do a redirect while setting the flash[:error] value. (Rails 3.0.10)

In my view I have

<p id="error"><%= flash[:error] %></p>
<p id="notice"><%= flash[:notice] %></p>

If I do a redirect_to show_path, :notice => "ok" it works fine, but if I do redirect_to show_path, :error => "error" it doesn't show up.

what could I be missing?

Ruby on-Rails-3 Solutions


Solution 1 - Ruby on-Rails-3

As stated in the Rails API only :notice and :alert are by default applied as a flash hash value. If you need to set the :error value, you can do it like this:

redirect_to show_path, flash: { error: "Insufficient rights!" }

Solution 2 - Ruby on-Rails-3

If you are having problem to keep the flash after redirecting to another path, then use this.

flash.keep

in your method, before redirecting.

Solution 3 - Ruby on-Rails-3

To truly follow the PRG pattern, I wonder if this project works well

https://github.com/tommeier/rails-prg

I can't stand apps not following PRG as a user.....I have been 6 pages after a POST and hit the back button to get back to 10 pages ago get blocked by "do you want to repost this crap"....no, of course not. I just want to get back to a page I had seen before.

non-PRG apps are very very annoying to users.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDanielView Question on Stackoverflow
Solution 1 - Ruby on-Rails-3TarnschafView Answer on Stackoverflow
Solution 2 - Ruby on-Rails-3Ramiz RajaView Answer on Stackoverflow
Solution 3 - Ruby on-Rails-3Dean HillerView Answer on Stackoverflow