Sha256: 401293ce72ffd4ac3c45fb21aa067af8e46dd8466b73c1f5cdc0bf393157bfbb

Contents?: true

Size: 901 Bytes

Versions: 1

Compression:

Stored size: 901 Bytes

Contents

module Para
  module Component
    module CrudDecorator
      include Para::Component::BaseDecorator

      def path(options = {})
        find_path([:admin, self, :resources], options)
      end

      def relation_path(controller_or_resource, options = {})
        if (id = extract_id_from(controller_or_resource))
          options[:id] = id
        end

        route_key = route_key_for(options[:id], options)
        options[:model] = model.model_name.singular_route_key

        polymorphic_path([:admin, self, route_key].compact, options)
      end

      private

      def extract_id_from(object)
        object.id if object.respond_to?(:persisted?) && object.persisted?
      end

      def route_key_for(id, options)
        if id || options[:action].presence && options[:action].to_sym == :new
          :resource
        else
          :resources
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
para-0.5.0 app/decorators/para/component/crud_decorator.rb