我希望在sinatra中使用相同的路由处理程序处理多个URL:
目前我有:
get 'autocomplete' do
但理想情况下我想:
get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do
如果可能的话,我还需要一种让联系人/用户/公司离开路径的方法吗?
这可以在sinatra完成吗?
答案 0 :(得分:8)
您可以这样做:
['autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies'].each do |path|
get path do
# ...
end
end
然后通过执行以下操作检索路由的名称:
request.path_info.gsub(/^\/autocomplete_/, '')
处理程序内部的将产生contacts
,users
或companies
。
如果您希望路由所有以autocomplete_
开头的路线,您只需使用正则表达式:
get /^autocomplete_([a-zA-Z])/ do
# ...
end
并通过检查params[:captures]
来检索路线的名称。
答案 1 :(得分:5)
您可以使用regexp:
get %r{(autocomplete_contacts|autocomplete_users|autocomplete_companies)$} do
答案 2 :(得分:3)
使用Sinatra MultiRoute Gem - 这就是您所需要的! http://www.sinatrarb.com/contrib/multi_route.html