我正在尝试熟悉 Sails.js。我遇到了一个问题:提交表单时我无法调用 Controller 。
这是我的 ejs 文件中的表单:
<form method="post" action="/calibers/add" enctype="multipart/form-data">
<label for="fname">Name of the new caliber:</label><br>
<input type="text" id="name" name="name" value="" placeholder="7,62x54 R">
<input type="submit" value="submit" class="btn">
</form>
以下是在routes.js 中完成映射的方式:
'GET /calibers/view': { action: 'calibers/view'},
'POST /calibers/add': { action: 'calibers/add'},
这里是被调用的 Controller :add.js:
module.exports = {
friendlyName: 'Add calibers',
description: 'Adding new caliber to calibers list',
inputs: {
name: {
type: 'string',
required: true
},
},
exits: {
success: {
responseType: 'view',
viewTemplatePath: 'pages/welcome'
},
},
fn: async function (inputs, exits) {
console.log("Called function");
let newCal = await Caliber.create({name: inputs.name});
// All done.
if (!newCal) {
return exits.invalid({
message: 'New caliber could\'t be added'
});
}
return exits.success({
message: 'New caliber successfully added',
data: userRecord
});}
};
当我单击表单的提交按钮时, Controller 似乎从未被调用,并且我被重定向到一个简单的“禁止”。到底是怎么回事 ?感谢您的帮助。
最佳答案
考虑到您正在使用您应该拥有的 action2 格式:
在 api/controllers/calibre/add 中添加操作
路由:
'POST /api/v1/caliber/add': { action: 'caliber/add' }'
在 View 文件中:
<form method="post" action="add" enctype="multipart/form-data">
尽管我建议您使用更长的操作名称,因为您可能添加了多个 Controller ,这可能会导致问题。
所有内容都在文档中,请阅读它们。
关于javascript - Sails.js:提交表单时 Controller 从未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60604322/