Korzystanie z interpolacji w Node.js EJS obejmuje

Moja aplikacja Express używa EJS, a mój katalog wyświetleń wygląda tak:

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

Próbuję załadować home.ejs w moim widoku layout.ejs warunkowo na podstawie lokalnej zmiennej o nazwiecontents w moich route / index.js. Ten plik wygląda tak:

/*
 * GET home page.
 */

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

Idealnie mogłabym po prostu napisać (w layout.ejs):

<% include '/contents' + contents %>

gdzie końcowa „zawartość” jest zmienną lokalną, która zawiera względną ścieżkę do tekstu treści do załadowania.

Ale niestety, wydaje się, że EJS zawsze interpretuje tekst poinclude dyrektywa dosłownie i nie ma szans, aby zdarzyła się jakakolwiek magia interpolacji.

Próbowałem też bezskutecznie:

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

Czy ktoś ma kreatywne rozwiązanie warunkowego włączenia widoku opartego na zmiennej przekazywanej na trasach?

questionAnswers(4)

yourAnswerToTheQuestion