Verwenden der Interpolation in Node.js EJS-Includes

Meine Express-App verwendet EJS und mein Ansichtsverzeichnis sieht folgendermaßen aus:

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

Ich versuche, home.ejs in meine layout.ejs-Ansicht zu laden, die auf einer lokalen Variablen namens basiertcontents in meinen routes / index.js. Diese Datei sieht so aus:

/*
 * GET home page.
 */

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

Im Idealfall könnte ich einfach schreiben (in layout.ejs):

<% include '/contents' + contents %>

Dabei ist der nachfolgende "Inhalt" die lokale Variable, die den relativen Pfad zum zu ladenden Nachrichtentext enthält.

Aber leider scheint es, dass EJS immer den Text interpretiert, der einem folgtinclude Direktive buchstäblich, und es gibt keine Chance für eine Interpolation Magie passieren.

Ich habe auch erfolglos versucht:

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

Hat jemand eine kreative Lösung für das bedingte Einschließen einer Ansicht, die auf einer in Routen übergebenen Variablen basiert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage