簡體   English   中英

我在將以下 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 controller

 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 代碼,因此您可以在某些屬性插值中使用三元條件,如下所示:

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM