Sha256: a36b0ec385164db63ee8d840bd81ed8690034fcde61e0878e2cf22112bd0b189

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module PersistCampaign
  module Controller
    def self.included base
      base.send :include, InstanceMethods
      base.alias_method_chain :_compute_redirect_to_location, :persist_campaign_params
    end

    module InstanceMethods
      # Solution provided by ndp's save-the-campaign gem (http://github.com/ndp/save-the-campaign),
      # reproduced here under the MIT license

      if Gem::Version.new(Rails.version) >= Gem::Version.new('4.2.1')
        def _compute_redirect_to_location_with_persist_campaign_params(request, options = {})
          url = _compute_redirect_to_location_without_persist_campaign_params(request, options)
          _add_persisted_keys_to(request, url)
        end
      else
        def _compute_redirect_to_location_with_persist_campaign_params(options = {})
          url = _compute_redirect_to_location_without_persist_campaign_params(options)
          _add_persisted_keys_to(request, url)
        end
      end

      def _add_persisted_keys_to(request, url)
        keys = PersistCampaign.config.keys.map(&:to_s)
        to_persist = request.params.slice(*keys)

        unless to_persist.empty?
          url << (url =~ /\?/ ? '&' : '?')
          url << to_persist.to_param
        end

        url
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
persist_campaign-0.0.2 lib/persist_campaign/controller.rb