Sha256: 8e96cc046f402be2876a20797058fa541a54fc2939a000e00f4823aa2499a819

Contents?: true

Size: 1.34 KB

Versions: 7

Compression:

Stored size: 1.34 KB

Contents

module Paloma

  # TODO explain!
  module ::ActionController::Redirecting
    alias_method :original_redirect_to, :redirect_to
  end

  

  module ActionControllerExtension
    def redirect_js_hook options = {}, response_status = {}
      add_to_callbacks @__callback__, @__js_params__
      original_redirect_to options, response_status
    end      
    alias_method :redirect_to, :redirect_js_hook
    
    
    #
    # js_callback false
    # js_callback :new, :params => {}
    # js_callback :controller => '', :action => '', :params => {}
    # js_callback :params => {}
    #
    def js_callback options = {}, extras = {}
      default_callback = "#{controller_path}/#{action_name}"
      params = {}
      
      if options.is_a? Hash
        params = options[:params]
        callback = options[:controller].present? && options[:action].present? ? 
          "#{options[:controller]}/#{options[:action]}" :
          default_callback

      elsif options.is_a? Symbol
        params = extras[:params] 
        callback = "#{controller_path}/#{options}"
      
      elsif options.nil? || options.is_a?(TrueClass)
        callback = default_callback
      
      else # false
        callback = nil
      end
      
      @__callback__ = callback
      @__js_params__ = params
    end 
  end
  

  ::ActionController::Base.send :include, ActionControllerExtension
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
paloma-1.2.6 lib/paloma/action_controller_extension.rb
paloma-1.2.5 lib/paloma/action_controller_extension.rb
paloma-1.2.4 lib/paloma/action_controller_extension.rb
paloma-1.2.3 lib/paloma/action_controller_extension.rb
paloma-1.2.2 lib/paloma/action_controller_extension.rb
paloma-1.2.1 lib/paloma/action_controller_extension.rb
paloma-1.2.0 lib/paloma/action_controller_extension.rb