Sha256: 43a04d9d81ebef786fbff608df7336633c902d7612117b8fcd15e3263a9c8356

Contents?: true

Size: 1.8 KB

Versions: 65

Compression:

Stored size: 1.8 KB

Contents

require 'spree/responder'

module ActionController
  class Base
    def respond_with(*resources, &block)
      if Spree::BaseController.spree_responders.keys.include?(self.class.to_s.to_sym)
        # Checkout AS Array#extract_options! and original respond_with
        # implementation for a better picture of this hack
        if resources.last.is_a? Hash
          resources.last.merge! action_name: action_name.to_sym
        else
          resources.push action_name: action_name.to_sym
        end
      end

      super
    end
  end
end

module Spree
  module Core
    module ControllerHelpers
      module RespondWith
        extend ActiveSupport::Concern

        included do
          cattr_accessor :spree_responders
          self.spree_responders = {}
          self.responder = Spree::Responder
        end

        module ClassMethods
          def clear_overrides!
            self.spree_responders = {}
          end

          def respond_override(options={})
            unless options.blank?
              action_name = options.keys.first
              action_value = options.values.first

              if action_name.blank? || action_value.blank?
                raise ArgumentError, "invalid values supplied #{options.inspect}"
              end

              format_name = action_value.keys.first
              format_value = action_value.values.first

              if format_name.blank? || format_value.blank?
                raise ArgumentError, "invalid values supplied #{options.inspect}"
              end

              if format_value.is_a?(Proc)
                options = {action_name.to_sym => {format_name.to_sym => {:success => format_value}}}
              end

              self.spree_responders.deep_merge!(self.name.to_sym => options)
            end
          end
        end
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 3 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0 lib/spree/core/controller_helpers/respond_with.rb
goca-spree-core-3.1.15.rails.5.0 lib/spree/core/controller_helpers/respond_with.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.14 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.13 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.12 lib/spree/core/controller_helpers/respond_with.rb
solidus_core-1.2.3 lib/spree/core/controller_helpers/respond_with.rb
solidus_core-1.1.4 lib/spree/core/controller_helpers/respond_with.rb
solidus_core-1.0.7 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.11 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.10 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.9 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.8 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.7 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.6 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.5 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.4 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.3 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.1.2 lib/spree/core/controller_helpers/respond_with.rb
spree_core-3.0.10 lib/spree/core/controller_helpers/respond_with.rb