Skip to content

Instantly share code, notes, and snippets.

@sevos
Created December 20, 2011 14:58
Show Gist options
  • Save sevos/1501850 to your computer and use it in GitHub Desktop.
Save sevos/1501850 to your computer and use it in GitHub Desktop.
BasePresenter
module ApplicationHelper
def present(object, klass = nil)
klass ||= "#{object.class}Presenter".constantize
presenter = klass.new(object, self)
yield presenter if block_given?
presenter
end
end
class BasePresenter
def initialize(object, template)
@object = object
@template = template
end
private
def self.inherited(klass)
name = klass.name.match(/(\w+)Presenter/).captures.first.underscore
klass.instance_eval do
define_method(name) { @object }
end
end
def method_missing(*args, &block)
@template.send(*args, &block)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment