有没有办法动态使用 res.render 和 url 参数

Is there a way to dynamically use res.render with a url parameter?

本文关键字:render url 参数 res 动态 有没有      更新时间:2023-09-26

我正在尝试以?parameter=12345的形式动态加载具有不同 url 参数的页面,但我得到的响应Failed to lookup view "account/signup?parameter=12345" in views directory,这可能意味着它实际上是在寻找该视图模板的完全匹配,包括参数方面。有没有办法在以下注册代码中使用该参数呈现页面:

exports.getSignup = function(req, res) {
  if (req.user) return res.redirect('/');
  try{
    headerString = req.headers.referer;
    headerString =  headerString.match(/'?(.*)/)[0] 
  }catch(e){
    console.log(e)
  }
  res.render('account/signup' + headerString, {
    title: 'Create Account',
    savedTripId: headerString
  });
};

Yo 可以在不提及 url 中提及headerString的情况下呈现

exports.getSignup = function(req, res) {
  if (req.user) return res.redirect('/');
  try{
    headerString = req.headers.referer;
    headerString =  headerString.match(/'?(.*)/)[0] 
  }catch(e){
    console.log(e)
  }
  res.render('account/signup', {
    title: 'Create Account',
    savedTripId: headerString
  });
};

而且由于您似乎正在使用JADE,因此您可以在客户端执行类似操作

form(action="/formsubmit/#{headerString}")
    // form elements
    .
    .
    .

这会将其呈现为

form(action="/formsubmit/1234")
    // form elements
    .
    .
    .

然后,当表单提交时,您可以在服务器端获取标头,如下所示

app.post('/formsubmit/:headerString', function(req, res){
    var tripId = req.params.headerString;
    var formData = req.body; // if you are using body parser middleware
    // now you know which tripId has to be saved and have the form data. Perform actions accordingly
})