0

最近、詩人と一緒にエクスプレスサイトを開設しました。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」ここで、到達しようとした投稿は「poet-test」と呼ばれます。そこで、ビュー内で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(function(post){...})に読み込まれる各投稿のpost.urlを確認し、それぞれが正しい/ post /titleurlで確認します...私はここで少し立ち往生しています。おそらく、app.router()または詩人固有のソリューションを使用してルートをログに記録します。

4

1 に答える 1

0

Poetリポジトリの例を確認してください-hrefをエスケープする必要はありません。PoetのURLは問題ないようですが、Jadeと格闘しているだけです。これを試してください。

a(href=post.url) post.title

https://github.com/jsantell/poet/blob/master/examples/views/includes/postSnippet.jade#L3

于 2013-01-20T15:40:40.417 に答える