Skip to content

Instantly share code, notes, and snippets.

@linjunpop
Created August 21, 2012 01:15
Show Gist options
  • Select an option

  • Save linjunpop/3410235 to your computer and use it in GitHub Desktop.

Select an option

Save linjunpop/3410235 to your computer and use it in GitHub Desktop.
Rails flash messages with AJAX requests
#flash-message
- flash.each do |name, msg|
= content_tag :div, msg, :id => "flash_#{name}"
class ApplicationController < ActionController::Base
protect_from_forgery
after_filter :flash_to_headers
private
def flash_to_headers
return unless request.xhr?
response.headers['X-Message'] = flash_message
response.headers["X-Message-Type"] = flash_type.to_s
flash.discard # don't want the flash to appear when you reload page
end
def flash_message
[:error, :warning, :notice].each do |type|
return flash[type] unless flash[type].blank?
end
end
def flash_type
[:error, :warning, :notice].each do |type|
return type unless flash[type].blank?
end
end
end
show_ajax_message = (msg, type) ->
$("#flash-message").html "<div id='flash-#{type}'>#{msg}</div>"
$("#flash-#{type}").delay(5000).slideUp 'slow'
$(document).ajaxComplete (event, request) ->
msg = request.getResponseHeader("X-Message")
type = request.getResponseHeader("X-Message-Type")
show_ajax_message msg, type #use whatever popup, notification or whatever plugin you want
@yash-m-agarwal
Copy link
Copy Markdown

Yes, Thanks James It even worked out for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment