Sha256: 192a46c97add54df02107f18dc79afa287b00b1317bd8204b3f2f11d06419d83

Contents?: true

Size: 994 Bytes

Versions: 3

Compression:

Stored size: 994 Bytes

Contents

module Nitrolinks
  module Rails

    module Controller
      extend ActiveSupport::Concern

      included do
        before_action :set_nitrolinks_location_header_from_session if respond_to?(:before_action)
      end

      def nitrolinks_request?
        request.headers.key? "nitrolinks-referrer"
      end

      def redirect_to(url = {}, options = {})
        super.tap do
          if nitrolinks_request?
            store_nitrolinks_location_in_session(location)
          end
        end
      end

      protected

      def nitrolinks_location(location)
        response.headers["Nitrolinks-Location"] = location
      end

      private

      def store_nitrolinks_location_in_session(location)
        session[:nitrolinks_location] = location if session
      end

      def set_nitrolinks_location_header_from_session
        if session && session[:nitrolinks_location]
          nitrolinks_location(session.delete(:nitrolinks_location))
        end
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nitrolinks-rails-0.3.0 lib/nitrolinks/rails/controller.rb
nitrolinks-rails-0.2.0 lib/nitrolinks/rails/controller.rb
nitrolinks-rails-0.1.0 lib/nitrolinks/rails/controller.rb