Skip to content

zweitag/glow

Repository files navigation

Glow

Glowing flashes! Okay... not really. This simply adds handling of the Flash Hash in Javascript. Depends on jQuery.

CI

The CI travis.com is disabled because of our migration to Github Actions. If the project is reactivated or the code needs to be changed you should migrate the CI-steps to Github Actions.

Usage

Any flash messages set in ajax responses fire a glow:flash event on document.

flash[:notice] = 'Ajax man!'
respond_to do |format|
  format.js { head :ok }
end

Handle it any way you want:

$(document).bind('glow:flash', function(evt, flash) {
  alert(flash.type);
  alert(flash.message);
});

Also adds a Flash object that enables you to fire glow:flash.

Flash.success('Yeah this worked!');
Flash.error('Something went wrong!');
Flash.notice('This is a flash message');

Flash.fire('type', 'message');

This can be used to unify your Flash message handling (also in non-xhr responses).

<% flash.each do |type, message| %>
  <%= javascript_tag "Flash.fire('#{type}', '#{message}')" %>
<% end %>

If you want to skip the glow after_action just set flash[:skip_glow].

You can also use glow with APIs by using headerize_flash_for and passing in the request formats you want the flash messages passed back.

class API::Base < ActionController::Base
  headerize_flash_for :json
end

Controllers inheriting from a controller using headerize_format_for will inherit the capability or it can be overridden.

class API::JSON < API::Base
  # will headerize flash for JSON requests
end

class API::XML < API::Base
  headerize_flash_for :xml
  # will NOT headerize flash for JSON requests
  # but will headerize flash for XML requests
end

Installation

In your gemfile add

gem "glow"

.

Rails >= 4

Add

//=require glow

to your manifest.

License

See MIT-LICENSE.