You can show messages using
flash. A flash message is a simple String that is
passed between two actions. This lets a user know if an action was a success
or a failure. (e.g. “Record was saved successfully”)
The built-in message types are
info. Using these
will cause compile-time errors if you accidentally mistype something. It is
recommended to stick to these whenever possible.
# In an action flash.success = "It worked!" flash.failure = "That did not work" flash.info = "Be cool"
These will be rendered by the flash component in
src/components/shared/flash_messages.cr. The flash component was mounted from
AuthLayout (found in
You can modify the layout or the component to add HTML classes, change where flash is rendered, etc.
The built-in messages are
info, but you can use anything
flash.set("something_special", "Super spesh") flash.get("something_special") # => "Super spesh"
By default, flash messages are cleared whenever
redirect is called. This is illustrated below:
class Home::Index < BrowserAction get "/" do if current_user flash.failure = "I won't show, because we're using a redirect!" redirect to: Me::Show else flash.success = "I will show, because we're rendering a page!" html Home::IndexPage end end end
To show flash messages through a redirect, we must leverage the
class Home::Index < BrowserAction get "/" do if current_user flash.keep flash.success = "Now I will show, because of flash.keep!" redirect to: Me::Show else flash.success = "I will show, because we're rendering without calling a new action!" html Home::IndexPage end end end