我想有多個URL的單一路線的多條路徑可以通過相同的途徑處理在西納特拉處理:在西納特拉
目前我有:
get 'autocomplete' do
但最好我想:
get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do
我還需要得到聯繫人/用戶/企業部分出的路徑,如果這是有可能的一種方式?
這可以在sinatra完成嗎?
我想有多個URL的單一路線的多條路徑可以通過相同的途徑處理在西納特拉處理:在西納特拉
目前我有:
get 'autocomplete' do
但最好我想:
get 'autocomplete_contacts', 'autocomplete_users', 'autocomplete_companies' do
我還需要得到聯繫人/用戶/企業部分出的路徑,如果這是有可能的一種方式?
這可以在sinatra完成嗎?
您可以使用正則表達式:
get %r{(autocomplete_contacts|autocomplete_users|autocomplete_companies)$} do
你可以簡單地做:
['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]
檢索路線的名稱。
使用西納特拉MultiRoute寶石 - 這是你需要的東西! http://www.sinatrarb.com/contrib/multi_route.html
如果您使用命名空間多路徑,那麼它不能正常工作。請參閱下面的鏈接https://github.com/sinatra/sinatra-contrib/issues/136 –
好主意,這裏是我結束了: GET%R {(? [A-ZA-Z] +)autocomplete_}做|名稱| –
dagda1