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 alert
and 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 %>
https://api.rubyonrails.org/classes/ActionController/Flash/ClassMethods.html
Tweet