Ruby sinatra中单一路线的多条路径

Ruby sinatra中单一路线的多条路径,ruby,sinatra,Ruby,Sinatra,我希望由sinatra中的同一路由处理程序处理多个URL: 目前我有: get 'autocomplete' do 但理想情况下,我希望: get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do 如果可能的话,我还需要一种让联系人/用户/公司部分脱离路径的方法 这可以在sinatra完成吗?您只需执行以下操作: ['autocomplete_contacts', 'autocomplete_

我希望由sinatra中的同一路由处理程序处理多个URL:

目前我有:

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 |如果您使用多路径的名称空间,则它无法正常工作。请参阅下面的链接最佳答案:如果路由是静态的,请使用数组,否则使用正则表达式