我有一个简单的模型如下:
module.exports = {
attributes: {
firstName: 'STRING',
lastName: 'STRING',
contact: 'STRING',
email: 'STRING'
}
};
我已经有一个显示所有人的索引动作。这是相应的观点:
<h1>List of all humans</h1>
<ul>
<% _.each(humans, function(model) { %>
<li><%= model.firstName %> /// <%= model.lastName %> /// <%= model.contact %> /// <%= model.email %> <a href="/human/edit"><button id="<%=model.firstName %>"type="button">Edit</button> </a></li>
<% }) %>
</ul>
我想要完成的是每次有人点击EDIT按钮,显示包含该特定模型的所有信息的视图(localhost:1337 / human / edit /:id)。我该怎么写我的控制器?如何告诉控制器我希望显示特定型号并正确布线?
谢谢!
答案 0 :(得分:0)
您应该将浏览器指向localhost:1337/human/edit/:id
网址,其中:id是您特定型号的id
。例如
<ul>
<% _.each(humans, function(model) { %>
<li><%= model.firstName %> <a href="/human/edit/<%= model.id %>"><button id="<%=model.firstName %>" type="button">Edit</button> </a>
</li>
<% }) %>
</ul>
这将自动执行Human.edit
控制器,并将id
param设置为特定模型的id。您不必编写任何自定义路由,这是默认行为。
人/编辑控制器操作的示例:
edit: function(req, res) {
Human.findById( req.param('id') )
.done(function(err, human) {
if (err) {
return res.send(err, 500);
} else {
if (human.length) {
res.json(human[0]);
} else {
res.send('Human not found', 500);
}
}
});
}
为了简单起见,我在这里返回编码为json的模型作为响应,但您可以使用您的视图。
此外,firstName
属性不是用作按钮id
属性的最佳值,因为它应该是唯一的。