加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – sinatra路线中的几个可选参数

发布时间:2020-12-17 01:21:15 所属栏目:百科 来源:网络整理
导读:我需要Sinatra路由以下列方式运行: GET /list/20/10 # Get 20 items with offset 10GET /list/20 # Get 20 items with default offsetGET /list # Get default number of items with default offset 我明白,我可能会将值作为查询传递: GET /list?limit=20o
我需要Sinatra路由以下列方式运行:
GET /list/20/10  # Get 20 items with offset 10
GET /list/20     # Get 20 items with default offset
GET /list        # Get default number of items with default offset

我明白,我可能会将值作为查询传递:

GET /list?limit=20&offset=10

但是我想按照上面的描述传递它们.我很确定有办法向Sinatra / Padrino解释我想做什么,但我现在完全被困在了.我试过了:

get :list,:map => '/list',:with => [:limit,:offset] {} # 404 on /list
get :list,:map => '/list/*' { puts params[:splat] } # 404 on /list
get :list,:map => '/list/?:limit?/?:offset?' {} # 404 on /list
get :list,:map => '/list' { redirect url_for(:list,…) } # 302,not convenient for consumers

我怎么能注意到Sinatra参数可能是可选的?

偶然,

get %r{/list(/[^/]+)*} do
  # parse params[:captures]
end

有效,但看起来很傻.

解决方法

这个最小的例子:
#!/usr/bin/env ruby
require 'sinatra'

get '/test/?:p1?/?:p2?' do
  "Hello #{params[:p1]},#{params[:p2]}"
end

适用于/ test,/ test / a和/ test / a / b.我错过了你的问题吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读