class PresenterObject::Base

Presenter superclass. Create your own presenter by sub-classing `PresenterObject::Base` and declaring the name of the model it will present.

e.g:

class DocumentPresenter << PresenterObject::Base
  presents :document

 .. add instance methods here ..
end

Create a presenter instance by giving it a model instance e.g:

document = DocumentPresenter.new Document.find(params[:id])
document.sender # can call any document model methods...
document.pretty_sender # ...as well as any presenter defined method
document.class # is the wrapped object's class, helps it behave like models do in forms, link helpers etc.

Attributes

class[R]
object[R]
to_param[R]
view_context[R]

Public Class Methods

new(object, view_context = nil) click to toggle source
# File lib/presenter_object/base.rb, line 38
def initialize(object, view_context = nil)
  @object = object
  @class = object.class # impersonate object's class
  @to_param = parameterize object
  @view_context = view_context
end
presented_class() click to toggle source
# File lib/presenter_object/base.rb, line 29
def presented_class
  @presented_class ||= @class_name.constantize
end
presenters() click to toggle source
# File lib/presenter_object/base.rb, line 33
def presenters
  @@presenters ||= {}
end
presents(class_name) click to toggle source
# File lib/presenter_object/base.rb, line 24
def presents(class_name)
  @class_name = class_name.to_s.classify
  presenters[@class_name] = self
end

Private Instance Methods

parameterize(obj) click to toggle source

let link helpers know the object's id

# File lib/presenter_object/base.rb, line 48
def parameterize(obj)
  if obj.respond_to? :to_param
    obj.to_param
  elsif obj.respond_to? :id
    obj.id.to_s
  else
    ''
  end
end