Class: PresenterObject::Base
- Inherits:
-
Object
- Object
- PresenterObject::Base
- Defined in:
- lib/presenter_object/base.rb
Overview
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.
Instance Attribute Summary collapse
-
#class ⇒ Object
readonly
Returns the value of attribute class.
-
#object ⇒ Object
readonly
Returns the value of attribute object.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(object) ⇒ Base
constructor
A new instance of Base.
- #method_missing(name, *args, &block) ⇒ Object
- #respond_to?(name, include_private = false) ⇒ Boolean
Constructor Details
#initialize(object) ⇒ Base
Returns a new instance of Base.
37 38 39 |
# File 'lib/presenter_object/base.rb', line 37 def initialize(object) @object, @class = object, object.class end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
41 42 43 44 |
# File 'lib/presenter_object/base.rb', line 41 def method_missing(name, *args, &block) super unless object.respond_to? name object.send name, *args, &block end |
Instance Attribute Details
#class ⇒ Object (readonly)
Returns the value of attribute class.
35 36 37 |
# File 'lib/presenter_object/base.rb', line 35 def class @class end |
#object ⇒ Object (readonly)
Returns the value of attribute object.
35 36 37 |
# File 'lib/presenter_object/base.rb', line 35 def object @object end |
Class Method Details
.presented_class ⇒ Object
26 27 28 |
# File 'lib/presenter_object/base.rb', line 26 def presented_class @presented_class ||= @class_name.constantize end |
.presenters ⇒ Object
30 31 32 |
# File 'lib/presenter_object/base.rb', line 30 def presenters @@presenters ||= {} end |
.presents(class_name) ⇒ Object
21 22 23 24 |
# File 'lib/presenter_object/base.rb', line 21 def presents(class_name) @class_name = class_name.to_s.classify presenters[@class_name] = self end |
Instance Method Details
#respond_to?(name, include_private = false) ⇒ Boolean
46 47 48 |
# File 'lib/presenter_object/base.rb', line 46 def respond_to?(name, include_private = false) object.respond_to? name, include_private or super end |