Sha256: ce638717ced78e078ccaaef8e122a6d531faf8c238eeaca9dfa99320c05fd806

Contents?: true

Size: 1.3 KB

Versions: 33

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module PgEngine
  module RouteHelper
    class NamespaceDeductor
      def self.request(context)
        if context.respond_to?(:request) && context.request
          # Controllers
          context.request
        elsif context.respond_to?(:helpers) && context.helpers
          # Decorators
          context.helpers.request
        elsif context.respond_to?(:template) && context.template
          # FormBuilders
          context.template.request
        end
      end

      def self.namespace(context)
        req = request(context)
        route = Rails.application.routes.recognize_path(req.path, method: req.env['REQUEST_METHOD'])
        parts = route[:controller].split('/')
        return unless parts.length > 1

        parts.first.to_sym
      rescue ActionController::RoutingError
        nil
      end
    end

    def pg_namespace
      NamespaceDeductor.namespace(self)
    end

    def namespaced_path(object, options = {})
      target = [pg_namespace, object]

      if options[:prefix]
        target.prepend options[:prefix]
        options.delete(:prefix)
      end

      if options[:suffix]
        target.append options[:suffix]
        options.delete(:suffix)
      end

      polymorphic_url(target.flatten.compact, options.merge(only_path: true))
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
pg_rails-7.0.8.pre.alpha.38 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.37 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.36 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.35 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.34 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.33 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.32 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.31 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.30 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.29 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.28 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.27 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.26 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.25 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.24 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.23 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.22 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.21 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.20 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.19 pg_engine/app/helpers/pg_engine/route_helper.rb