我在将以下 Ejs 转换为哈巴狗时遇到问题

I am having a problem to convert the following Ejs to pug

我在将以下 Ejs 转换为哈巴狗时遇到问题

在admin/edit-product.ejs 我们可以对已有的产品进​​行更改 但我想将 ejs 转移到哈巴狗 任何解决方案

<form class="product-form" action="/admin/<% if (editing) { %>edit-product<% } else { %>add-product<% } %>" method="POST">

在 admin.js 控制器中

 exports.getAddProduct = (req, res, next) => {
    res.render('admin/edit-product', {
      pageTitle: 'Add Product',
      path: '/admin/add-product',
      editing: false
    });
  };

  exports.postAddProduct=(req, res, next) => {
    const title=req.body.title;
    const imageUrl=req.body.imageUrl;
    const price=req.body.price;
    const description=req.body.description;
    const product=new Product(title,imageUrl,description,price);
    product.save();
    res.redirect('/');
  }; 
  exports.getEditProduct = (req, res, next) => {
    const editMode = req.query.edit;
    if (!editMode) {
      return res.redirect('/');
    }
    const prodId = req.params.productId;
    Product.findById(prodId, product => {
      if (!product) {
        return res.redirect('/');
      }
      res.render('admin/edit-product', {
        pageTitle: 'Edit Product',
        path: '/admin/edit-product',
        editing: editMode,
        product: product
      });
    });
  };

Pug 支持内联 JavaScript 代码,因此您可以像这样使用 ternary conditional within some attribute interpolation

form.product-form(action='/admin/' + (editing ? 'edit' : 'add') + '-product', method='POST')

或者为了更易读的方法,预先在代码块中构建 action 路径并将其存储在变量中:

-
  let action = editing ? 'edit' : 'add'
  let actionPath = `/admin/${action}-product`

form.product-form(action= actionPath, method='POST')