I'm still working on my rails 4 demo site, and I'm seeing an odd thing. In the controller it has a line like this:
format.html { redirect_to @widget, notice: 'Widget was successfully created.' }
This renders a flash message in the redirected page, which is expected. However, the css class attached to the message div is alert alert-notice
rather than a valid Bootstrap alert class, like alert-info
.
Where is the class being set for this flash, and how do I customize it?
Also, if I'm deleting a record via ajax, is there a way to access the core flash container to display the message via js, or do I have to show / hide my own flash message div just for ajax requests?
EDIT: my Michael Hartl inspired layouts/application.html.erb
:
<div class="container">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<%= yield %>
</div>
Thanks!
EDIT 2:
Perhaps I wasn't clear enough in my original question. I understand exactly how the class is being set in the flash object in this case. I am interested in learning how to use and customize the notice:
in the format.html
block. It seems there should be a way to pass a class via this notice? Or is this not a core Rails way of doing things?
Add this to
app/controllers/application_controller.rb
and then you can do this in your controllers
provided you did this in your layouts
In
application.html.erb
, you would be displaying theflash
messages.Update that code as below
You can add the classes that you want to apply to the flash message in the
class
option.EDIT
The class is setup as
alert alert-notice
because ofalert alert-<%= key %>
in your code. When you callredirect_to @widget, notice: 'Widget was successfully created.
A flash message would be added in
flash
hash with key asnotice
and value asWidget was successfully created.
, i.e.,EDIT #2
format.html { redirect_to @widget, notice: 'Widget was successfully created.' }
notice: 'Widget was successfully created.'
is an argument passed toredirect_to
method. It is added toflash
hash in this method.If you don't want to mess up with your
ApplicationController
as @Sachin Mour indicated, you can just add few addtional CSS clases, accordingly:in
app/assets/stylesheets/custom.scss
:Step by step tutorial, how to approach flash messages with devise and bootstrap, you can find here