DEV Community

loading...
Cover image for Ruby on Rails 6: Disappearing flash messages with toastr

Ruby on Rails 6: Disappearing flash messages with toastr

yarotheslav profile image Yaroslav Shmarov Originally published at blog.corsego.com on ・1 min read

Source library: https://github.com/CodeSeven/toastr

Installation:

console:

yarn add toastr
Enter fullscreen mode Exit fullscreen mode

Import toastr in app/javascripts/packs/application.js:

global.toastr = require("toastr")
Enter fullscreen mode Exit fullscreen mode

app/javascript/stylesheets/application.scss:

@import 'toastr'
Enter fullscreen mode Exit fullscreen mode

app/javascript/packs/application.js:

import "../stylesheets/application"
Enter fullscreen mode Exit fullscreen mode

app/views/layouts/application.rb:

<% unless flash.empty? %>
   <script type="text/javascript">
      <% flash.each do |f| %>
    <% type = f[0].to_s.gsub('alert', 'error').gsub('notice', 'info') %>
     toastr['<%= type %>']('<%= f[1] %>');
   <% end %>
   </script>
<% end %>
Enter fullscreen mode Exit fullscreen mode

customizing the flash:

<% unless flash.empty? %>
  <script type="text/javascript">
    <% flash.each do |f| %>
        <% type = f[0].to_s.gsub('alert', 'error').gsub('notice', 'info') %>
        toastr['<%= type %>']('<%= f[1] %>', '', {
          "closeButton": true,
          "positionClass": "toast-top-center", 
          "onclick": null, 
          "showDuration": "300", 
          "hideDuration": "1000", 
          "timeOut": "5000", 
          "extendedTimeOut": "1000", 
          "showEasing": "swing", 
          "hideEasing": "linear", 
          "showMethod": "fadeIn", 
          "progressBar": true,
          "hideMethod": "fadeOut" });
    <% end %>
  </script>
<% end %>
Enter fullscreen mode Exit fullscreen mode

Footnote: require("stylesheets/application.scss") = import "../stylesheets/application"

Final result:

flash-message-example

Discussion (0)

pic
Editor guide