Custom Flash Messages in Rails
Why Aren't My Flash Messages Working?
Turns out, there's 2 keys that Rails supports by default for flash messages. Those are
notice; you can use them like this in your controller:
redirect_to users_path, notice: "User created successfully" # - or - render :new, alert: "An error prevented the user from being saved"
But if your flash rendering code is generic enough, you might notice that explicitly setting a key/message on flash will work for values other than the defaults:
flash[:success] = "User created successfully" redirect_to users_path
TIL Rails has a helper that will allow us to add our own custom flash messages -
add_flash_type. You can use this an a controller (re:
ApplicationController) to enable new flash message types. This will allow you to do the one liners in render and redirect calls:
class ApplicationController < ActionController::Base add_flash_type :my_flash_type end # ... redirect_to users_path, my_flash_type: "User created successfully" # - or - render :new, my_flash_type: "An error prevented the user from being saved"
In addition, it will also add a variable in our views to retrieve this message:
<%= my_flash_type %>