Usando a interpolação dentro do Node.js, o EJS inclui

Meu aplicativo Express está usando o EJS e meu diretório de visualizações é semelhante ao seguinte:

./views
  ./contents
    home.ejs
  ./includes
    header.ejs
    footer.ejs
  layout.ejs

Eu estou tentando carregar home.ejs na minha visualização layout.ejs condicionalmente com base em uma variável local chamadacontents em minhas rotas / index.js. Esse arquivo é assim:

/*
 * GET home page.
 */

exports.index = function(req, res){
  res.render('index', { title: 'Home', contents: 'home.ejs' });
};

Idealmente, eu poderia simplesmente escrever (em layout.ejs):

<% include '/contents' + contents %>

onde o "conteúdo" final é a variável local que contém o caminho relativo para o texto do corpo para carregar.

Mas, infelizmente, parece que o EJS sempre interpreta o texto seguindo umainclude diretiva literalmente, e não há chance de qualquer magia de interpolação acontecer.

Eu também tentei sem sucesso:

<% function yieldContent(contents){ %>
  <% var contentPath = 'contents/' + contents; %>
  <% include contentPath %>
<% }; %>
<% loadContent(); %>

Alguém tem uma solução criativa para incluir condicionalmente uma exibição com base em uma variável passada em rotas?

questionAnswers(4)

yourAnswerToTheQuestion