Ruby sinatra中单一路线的多条路径
我希望由sinatra中的同一路由处理程序处理多个URL: 目前我有:Ruby sinatra中单一路线的多条路径,ruby,sinatra,Ruby,Sinatra,我希望由sinatra中的同一路由处理程序处理多个URL: 目前我有: get 'autocomplete' do 但理想情况下,我希望: get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do 如果可能的话,我还需要一种让联系人/用户/公司部分脱离路径的方法 这可以在sinatra完成吗?您只需执行以下操作: ['autocomplete_contacts', 'autocomplete_
get 'autocomplete' do
但理想情况下,我希望:
get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do
如果可能的话,我还需要一种让联系人/用户/公司部分脱离路径的方法
这可以在sinatra完成吗?您只需执行以下操作:
['autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies'].each do |path|
get path do
# ...
end
end
然后通过执行以下操作检索路由的名称:
request.path_info.gsub(/^\/autocomplete_/, '')
在处理程序内部,将生成联系人
、用户
或公司
如果您希望路由所有以autocomplete\uu
开头的路由,只需使用正则表达式:
get /^autocomplete_([a-zA-Z])/ do
# ...
end
并通过检查params[:captures]
检索路由名称。您可以使用regexp:
get %r{(autocomplete_contacts|autocomplete_users|autocomplete_companies)$} do
使用Sinatra MultiRoute Gem-这是您所需要的!
好主意,我的结论是:获取%r{autocomplete_u(?[A-Za-z]+)}do | name |如果您使用多路径的名称空间,则它无法正常工作。请参阅下面的链接最佳答案:如果路由是静态的,请使用数组,否则使用正则表达式