我最近用诗人建立了我的特快网站。我可以使用post.url和向所有视图提供的所有局部变量,但url路由除外-例如,在我的blog.jade视图中:
ul.blog-preview$
each post in postList$
li$
a(href=#{post.url}) #{post.title}$ 视图呈现得很好,但当单击post.url:"http://localhost:8080/undefined/post/poet-testundefined“时,路由快捷键尝试,我试图到达的帖子称为‘诗人测试’。因此,我尝试在视图中打印出post.url。
p #{post.url}令我惊讶的是,它作为后/诗人考试的形式打印得很好。因此,显然我尝试浏览localhost:8080/ post /post-test,但这也不起作用,因为post.title上有一个引用错误,我怀疑这是一个问题,因为这个帖子在路由中迷路了。
这是我的site.js (或大多数被称为app.js ),我已经包含了我认为必须与解决这个问题相关的内容。
var express = require('express')
, app = module.exports = express()
, http = require('http')
, poet = require('poet')(app)
poet
.createPostRoute()
.createPageRoute()
.createTagRoute()
.createCategoryRoute()
.init(function(locals) {
locals.postList.forEach(function ( post ) {
console.log('loading post: ' + post.url)
})
})
app.configure(function(){
//...etc
app.use(app.router);
//...etc
app.use(express.static(__dirname + '/public'));
});
//Dev settings
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions:true, showStack:true }));
app.set('port', process.env.PORT || 8080);
app.use(express.logger('dev'));
});
//Production settings
//....etc
// controllers - load them
controllers = ["pages", "blog"]
for (i in controllers) {
controller = require('./controllers/' + controllers[i]);
controller.setup(app)
}
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
}); 如您所见,我检查它在post.url (函数( post ){. })中加载的每一篇文章,并使用正确的/post/title url签出.所以,我被困在这里了。可能是使用app.router()或特定于诗人的解决方案进行日志记录。
发布于 2013-01-20 15:40:40
看看“诗人回购”中的例子--你不应该逃避你的裁判。看起来诗人的urls很好,只是和Jade搏斗一下,试试这个:
a(href=post.url) post.titlehttps://github.com/jsantell/poet/blob/master/examples/views/includes/postSnippet.jade#L3
https://stackoverflow.com/questions/14409242
复制相似问题