引用错误:“标记未定义”

我已经操纵了这个应用程序中的代码,并把它放在views / layout.jade文件中的边栏中。 在侧边栏中,我剪切/粘贴了处理来自views / index.jade的标签的代码:

ul.tags each tag in tags a(href='/tag/' + tag._id.toHexString()) li.tag= tag.name 

标签是从数据库中获取的,并且在侧栏中呈现出来,但是当我点击其中一个标签(应该会显示一个标签为标签的所有post的新页面)时,我会收到一条错误消息:

 500 ReferenceError: ... layout.jade:10 8| p 9| ul.tags > 10| each tag in tags 11| a(href='/tag/' + tag._id.toHexString()) 12| li.tag= tag.name tags is not defined 

这里是在文件“tagcontroller.js”中调用的函数(这是处理标签的逻辑):

 app.get('/tag/:id', function(req, res){ model.Tag.findById(req.params.id, function (err, tag){ if (err) { console.log(err); // do something } var query = blogModel.BlogPost.find( { _id: { $in : tag.blogs } } ); query.where('date').lte(new Date()); query.exec(function (err, blogs) { if (err) { console.log(err); // do something } var query = model.Tag.find({}); query.exec(function (err, tags) { if (err) { console.log(err); // do something } res.render('tags/detail', { title: tag.name, blogs: blogs, tagList: tags, dateFormatter: dateFormatter }); }); }); }); }); 

如果我把代码放回views / index.jade,一切工作正常。 但我需要在layout.jade中能够在每个页面上显示它,而不仅仅是在Home(index.jade)上。

我真的很感激一些帮助!

现在,你有:

 res.render('tags/detail', { title: tag.name, blogs: blogs, tagList: tags, dateFormatter: dateFormatter }); 

但是如果你正在做each tag in tagseach tag in tags ,那么你应该有类似的东西

 { title: tag.name, blogs: blogs, tags: tags, dateFormatter: dateFormatter }