我已经操作了这个应用程序中的代码,并在views/layout.jade 文件中放入了一个侧边栏。在侧边栏中,我剪切/粘贴了处理来自 views/index.jade 的标签的代码:
ul.tags
each tag in tags
a(href='/tag/' + tag._id.toHexString())
li.tag= tag.name
这些标签按应有的方式从数据库中获取,并在侧边栏中呈现出来,但是当我单击其中一个时(应该显示一个新页面,其中所有帖子都带有该标签),我收到一条错误消息:
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) 上。
我真的很感激一些帮助!