我非常了解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这样做?
答案 0 :(得分:0)
我不完全确定您要问的是什么,但我认为您在询问如何从查询字符串中访问数据,例如如果您转到q
,那么p
与params[:q]
相等的方式就是使用q
来获取params[:p]
和{{1}得到p
是什么。
编辑所以我想你问如何1)检查查询字符串中是否有userId然后2)如果有检索它。如果这就是你所要求的,那么这就是解决方案:
If params[:userId] != nil
record == Table.find_by(user_id:params[:userId])
end