【问题标题】:Sails.js: Controller never called when submitting formSails.js:提交表单时从未调用过控制器
【发布时间】:2020-06-21 13:34:10
【问题描述】:

我正在尝试熟悉 Sails.js。我遇到了一个问题:提交表单时我无法调用控制器。

这是我的 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'},

这里是被调用的控制器: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
     });}

};

当我单击表单的提交按钮时,控制器似乎从未被调用,并且我被重定向到一个简单的“禁止”。到底是怎么回事 ?谢谢你的帮助。

【问题讨论】:

    标签: javascript node.js sails.js ejs


    【解决方案1】:

    考虑到您正在使用您应该拥有的 action2 格式:

    api/controllers/caliber/add 中的动作添加

    路由:

    'POST /api/v1/caliber/add': { action: 'caliber/add' }'
    

    在视图文件中:

    <form method="post" action="add" enctype="multipart/form-data">
    

    虽然我建议您使用较长的操作名称,因为您可能添加了几个可能导致问题的控制器。

    全部在文档中,请阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多