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