docs: function (req, res) {
      var auto = (options.ui && options.ui.controller && (typeof options.ui.auto === 'undefined' || options.ui.auto));
      var views = [];
      var renderOptions = {
        ui: options.ui,
      };
      if (req.isAuthenticated()) {
        renderOptions.auth = {
          user: req.user,
        };
      }
      var render = function () {
        if (auto) {
          exports.render(res, 'auto', renderOptions);
        } else if (options.ui) {
          exports.render(res, options.name, renderOptions);
        } else {
          exports.render(res, options.name);
        }
      };
      if (auto) {
        if (options.ui.actions) {
          views.push({
            uri: options.ui.actions,
            name: 'htmlActions',
          });
        }
        if (options.ui.main && options.ui.main.actions) {
          views.push({
            uri: options.ui.main.actions,
            name: 'htmlActions',
            main: true,
          });
        }
        if (options.ui.select) {
          if (options.ui.select.actions && typeof options.ui.select.actions === 'string') {
            views.push({
              uri: options.ui.select.actions,
              name: 'htmlActions',
              select: true,
            });
            if (options.ui.select.viewActions) {
              views.push({
                uri: options.ui.select.viewActions,
                name: 'htmlViewActions',
                select: true,
              });
            }
          }
          if (options.ui.select.filter && typeof options.ui.select.filter === 'string') {
            views.push({
              uri: options.ui.select.filter,
              name: 'htmlFilter',
              select: true,
            });
          }
        }
      }
      if (views.length > 0) {
        vulpejs.async.eachSeries(views, function (view, callback) {
          res.render(view.uri, renderOptions, function (error, html) {
            if (error && error.length > 0) {
              vulpejs.log.error('RENDER-VIEW', {
                view: view.uri,
                html: html,
                error: error,
              });
            } else {
              if (view.include) {
                options.ui.includes[view.name] = html;
              } else if (!view.main && !view.select) {
                options.ui[view.name] = html;
              } else if (view.main) {
                options.ui.main[view.name] = html;
              } else if (view.select) {
                options.ui.select[view.name] = html;
              }
            }
            callback();
          });
        }, function () {
          render();
        });
      } else {
        render();
      }
    }