    # File lib/merb-core/controller/mixins/render.rb, line 209
      def display(object, thing = nil, opts = {})
        template_opt = thing.is_a?(Hash) ? thing.delete(:template) : opts.delete(:template)

        case thing
        # display @object, "path/to/foo" means display @object, nil, :template => "path/to/foo"
        when String
          template_opt, thing = thing, nil
        # display @object, :template => "path/to/foo" means display @object, nil, :template => "path/to/foo"
        when Hash
          opts, thing = thing, nil
        end

        # Try to render without the object
        render(thing || action_name.to_sym, opts.merge(:template => template_opt))

      # If the render fails (i.e. a template was not found)
      rescue TemplateNotFound => e
        # Merge with class level default render options
        # @todo can we find a way to refactor this out so we don't have to do it everywhere?
        opts = self.class.default_render_options.merge(opts)

        # Figure out what to transform and raise NotAcceptable unless there's a transform method assigned
        transform = Merb.mime_transform_method(content_type)
        if !transform
          raise NotAcceptable, "#{e.message} and there was no transform method registered for #{content_type.inspect}"
        elsif !object.respond_to?(transform)
          raise NotAcceptable, "#{e.message} and your object does not respond to ##{transform}"
        end

        layout_opt = opts.delete(:layout)
        _handle_options!(opts)
        throw_content(:for_layout, opts.empty? ? object.send(transform) : object.send(transform, opts))

        meth, _ = _template_for(layout_opt, layout_opt.to_s.index(".") ? nil : content_type, "layout") if layout_opt
        meth ? send(meth) : catch_content(:for_layout)
      end