【发布时间】:2018-09-07 20:36:03
【问题描述】:
我正在循环遍历 MySQL 表中的记录,将它们显示在 EJS 文件中,并在单击时路由到页面以编辑记录。但是,我无法将单个对象传递回我的 routes.js 文件以将其路由到编辑页面。我循环浏览所有记录并打印它们没有问题,所以我知道数据在那里。这是 EJS 文件的一部分,我在其中输出所有记录以供用户选择:
<body>
<div class="container">
<div class="col-sm-6 col-sm-offset-3">
<h1><span class="fa fa-chess"></span> View Roommate Agreements</h1><br>
<p align="center">Click on a Roommate Agreement below to view the full response and edit if necessary.</p><br>
<% for (var i=0; i < Agreements.length; i++) { %>
<a href="/editAgreement" style="text-decoration: none; color: #333333">
<div class="well" align="center">
<h3>Roommate Agreement for Room #<%= Agreements[i].roomNumber%></h3>
<p><%= Agreements[i].roommate1%></p>
<p><%= Agreements[i].roommate2%></p>
<% var Agreement = Agreements[i]%> //THIS is where I'm trying to declare the object
</div>
</a>
<% } %>
<hr>
<p align="center">
<a href="/agreement" class="btn btn-default btn-sm"><span class="fa fa-arrow-circle-left"></span> Back</a>
<a href="/logout" class="btn btn-default btn-sm"><span class="fa fa-sign-out-alt"></span> Logout</a>
</p>
</div>
</div>
</body>
这里是将对象路由到编辑页面的 Get 函数。您可以看到我尝试将对象记录到控制台的位置,以确保获得正确的信息,但它当前打印为“未定义”。
app.get('/editAgreement', isLoggedIn, function(req, res) {
res.render('editAgreement.ejs', {
Employee: req.user
})
console.log(req.body.Agreement);
})
我不确定问题是我如何在 EJS 中声明对象变量,或者我如何尝试在 Get 函数中使用它,因为我是 Javascript 新手。任何提示或帮助将不胜感激,谢谢! :)
【问题讨论】:
-
您是否尝试为每个协议创建唯一链接? (其中包含一些额外的数据,比如室友的名字作为上下文?)
-
Blake,要访问模板中的
Agreements变量,您需要先从render调用中传入它,就像传入Employee一样。 -
请在客户端发布你的
get函数 -
@StephenGheysens 单击特定协议后,我希望它重定向到用户可以编辑它的页面。我知道我需要从
render调用中传递它,但我仍在努力在那里获取数据。console.log函数当前在控制台中打印undefined,如果数据被正确传递,则不会。 -
@ShimonBrandsdorfer 我不太清楚你的意思。你能澄清一下吗?
标签: javascript mysql node.js express ejs