我最近用poet设置了我的快递网站。我可以使用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 / poet-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'));
});
正如你所看到的,我在poet.init(函数(post){...})中检查了每个帖子的post.url,并且每个帖子都使用正确的/ post / title url进行检查。所以,我有点卡在这里。也许用app.router()或诗人特定的解决方案以某种方式记录路线。
答案 0 :(得分:0)
查看Poet回购中的例子 - 你不应该逃避你的hrefs ..看起来诗人的网址很好,只是和Jade一起摔跤,试试这个:
a(href=post.url) post.title
https://github.com/jsantell/poet/blob/master/examples/views/includes/postSnippet.jade#L3