lib/bourgeois/view_helper.rb in bourgeois-0.1.5 vs lib/bourgeois/view_helper.rb in bourgeois-1.0
- old
+ new
@@ -9,18 +9,22 @@
# end
def present(object, klass = nil, &blk)
return object.map { |o| present(o, klass, &blk) } if object.respond_to?(:to_a)
if klass.blank?
- begin
- klass_name = "#{object.class}Presenter"
- klass = klass_name.constantize
- rescue ::NameError
- raise UnknownPresenter.new(klass_name)
+ if object.is_a?(Bourgeois::Presenter)
+ presenter = object
+ else
+ begin
+ klass_name = "#{object.class}Presenter"
+ klass = klass_name.constantize
+ rescue ::NameError
+ raise UnknownPresenter.new(klass_name)
+ end
end
end
- presenter = klass.new(object, self)
+ presenter ||= klass.new(object, self)
yield presenter if block_given?
presenter
end
end