如何将视图呈现为字符串

How to render a view to a string?

本文关键字:字符串 视图      更新时间:2023-09-26

我想在sailsjs控制器/操作中呈现一个特定的视图,该视图应作为电子邮件发送。

我有以下示例操作:

function registerAction(req, res) {
   // handle user registration

  // email user
  sendEmail({
      to: newUser.email,
      subject: "Welcome",
      text: /* VIEW RENDER HERE */
  });
  // render view to the user
  return res.view({
     user: newUser
  });
}

如何使用 sailsjs 提供的工具渲染视图模板,以便我不需要对电子邮件文本进行硬编码或使用其他库?

提前感谢!

Express' res.render()仍然可以在res对象中访问。

function registerAction(req, res) {
   // handle user registration
  res.render('/path/to/view', function (err, html) {
    // email user
    sendEmail({
        to: newUser.email,
        subject: "Welcome",
        text: html
    });
  }
  // render view to the user
  return res.view({
     user: newUser
  });
}

对crzrcn的答案进行一点改进,以确保

function registerAction(req, res) {
   // handle user registration
  // don't include the .ejs of the end of your view, this assumes a file in path/to/view.ejs
  res.render('path/to/view', function (err, html) {
    // email user
    sendEmail({
        to: newUser.email,
        subject: "Welcome",
        html: html // rather than text in crzrcn's answer
    });
  }
  // render view to the user
  return res.view({
     user: newUser
  });
}