我有一个在express中返回错误消息的路由。使用连接闪存。一切正常,我记录了消息,但我无法在我的pug文件中显示消息。希望有人会指导我的错误/误解。我按照教程学习快速,所以我先发布我的代码,然后发布带有把手的教程代码。
我的路线是:
router.get('/signup', function (req, res) {
var messages = req.flash('error')
console.log(messages)
res.render('signup', { csrfToken: req.csrfToken(), messages: messages, hasErrors : messages.length > 0 });
});
这是我的注册玉文件。注意if块在顶部用"每个"迭代,然后在P行显示SINGLE消息:
extends layout
block content
//- The error is logged but not displaying in my pug
//- Error iteration to display error messages
if (hasErrors)
each error in hasErrors
p= error
//- end of iteration
div.constainer
div.row
div.col-md-4.offset-4
h1 Signup
form(action="" method="post")
div.form-group
label E-mail:
br
input.form-control( type="text" id="email" name="email")
div.form-group
label Password:
br
input.form-control( type="password" id="password" name="password")
br
input(type="hidden" name = "_csrf" value="#{csrfToken}")
button(type="submit") Signup
原始教程有把手,它有效。我试图用帕格重建相同的例子。以下是带有把手代码的教程:
div class="row">
<div class="col-md-4 col-md-offset-4">
<h1>Sign Up</h1>
>>>>>>***{{#if hasErrors}}
<div class="alert alert-danger">
{{# each messages }}
<p>{{this}}</p>
{{/each}}
</div>
>>>>>>{{/if}}***
<form action="/user/signup" method="post">
<div class="form-group">
<label for="email">E-Mail</label>
<input type="text" id="email" name="email" class="form-control">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" name="password" class="form-control">
</div>
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
<button type="submit" class="btn btn-primary">Sign Up</button>
</form>
</div>
</div>
带有把手代码的代码有效。我刚刚将相同的代码翻译成了哈巴狗。 如果我完全删除迭代并且只添加#{hasErrors} Jade显示为true和false,那么我的路线很好,这是我在Pug中的迭代。
我是初学者。任何帮助将不胜感激。
答案 0 :(得分:1)
如OP所确认,each
声明应为each error in messages
。