Sha256: a46653ca9cbb43b84d01bf41b50e466d7622ff61da528d6614518a612d8423cc
Contents?: true
Size: 896 Bytes
Versions: 9
Compression:
Stored size: 896 Bytes
Contents
module Refinery class BasePresenter DEFAULT_FIELDS = { :title => proc { |p| (p.model.class.name.titleize if p.model.present?) }, :path => proc { |p| p.title }, :browser_title => nil, :meta_description => nil } attr_reader :model def initialize(obj) @model = obj end def method_missing(method, *args) if @model.respond_to? method, include_all = true @model.send method elsif DEFAULT_FIELDS.has_key? method (value = DEFAULT_FIELDS[method]).is_a?(Proc) ? value.call(self) : value else raise NoMethodError.new("#{self.class.name} doesn't know #{method}. Define or delegate it.", method) end end def respond_to?(method, include_all = false) super || @model.respond_to?(method, include_all) || DEFAULT_FIELDS.has_key?(method) end end end
Version data entries
9 entries across 9 versions & 1 rubygems