通过URL参数查找数据

时间:2015-06-18 15:59:55

标签: ruby express sinatra

我非常了解Express,我想知道Sinatra是否有类似于我在Express应用程序中使用的功能。

拿这个Express例子:

app.param('userId', function(req, res, next, id) {
  User.findById(id, function(err, user) {
    if (!err) req.viewedUser = user;
    return next();
  });
});

如果任何路由在网址中包含:userId,我们会根据参数值自动抓取用户,然后将其设置为可在包含参数的路由中使用:

app.get('/users/:userId', function(req, res, next, id) {
  // req.viewedUser is now the user defined in app.param()
  res.render("edit-user" {
    user: req.viewedUser
  });
});

基本上,如果点击了URL路径参数,请将其设置为自动查找并使其在其他路径中可用。

有没有某种方式与Sinatra这样做?

1 个答案:

答案 0 :(得分:0)

我不完全确定您要问的是什么,但我认为您在询问如何从查询字符串中访问数据,例如如果您转到q,那么pparams[:q]相等的方式就是使用q来获取params[:p]和{{1}得到p是什么。

编辑所以我想你问如何1)检查查询字符串中是否有userId然后2)如果有检索它。如果这就是你所要求的,那么这就是解决方案:

If params[:userId] != nil
    record == Table.find_by(user_id:params[:userId])
end