Easily add Toastr flash notices to Rails apps

I learned about [Toastr](http://codeseven.github.io/toastr/demo.html) JavaScript library last week and have been delighted to use it instead of more traditional flash messaging.

First of all get the Toastr sources. I opted to link to them on CDNJS:

```haml
= stylesheet_link_tag 'https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.css'
= javascript_include_tag 'https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.js'
```

Next I defined some extra flash types in my `application_controller.rb` file to match Toastr's native notification types and enable use of the built-in styling.

```ruby
class ApplicationController < ActionController::Base
  add_flash_types :success, :info, :warning, :error
  ...
```

Finally, add the following block of JavaScript to the bottom of a layout template (or whatever shared partial that contains your JS and CSS includes.

```haml
- flash.keys.each do |key|
  - toastr_key = key
  - toastr_key = 'info' if key == 'notice'
  - toastr_key = 'warning' if key == 'alert'
  :javascript
    $(function() {
      toastr["#{toastr_key}"]("#{flash[key]}");
    });
```

Lines 2 and 3 establish a mapping from conventional Rails `notice` and `alert` so that I don't have to hack libraries like Devise which rely on them.

Easy.

obie-fernandez
January 16, 2017
