Sha256: f4498db62f61f1872d5a3247fbd68e99177aeafb7734f0a4da3b0d18a70b952f
Contents?: true
Size: 740 Bytes
Versions: 21
Compression:
Stored size: 740 Bytes
Contents
class ResourcePresenter < Presenter def initialize(subject, options = {}) @resource = options.delete(:resource) super(subject, options) end protected def resource @resource end def product if @resource && @resource.respond_to?(:product) @resource.product else nil end end def product_specific_presenter(klass_name) klass_name = klass_name.split('::') last_part = klass_name.pop klass_name = klass_name.map{|part| part.gsub('Presenter', '')}.join('::') klass = "#{product.class.name}::#{klass_name}::#{last_part}".constantize rescue nil if product (klass ? klass : "#{klass_name}::#{last_part}".constantize).new(subject, resource: @resource) end end
Version data entries
21 entries across 21 versions & 1 rubygems