2010-06-07 5 views
1

Мне нужны вложенные подкаталоги в моем приложении sinatra, как я могу упростить этот повторяющийся код?Как я могу упростить свои вложенные маршруты синатры?

# ------------- SUB1 -------------- 
get "/:theme/:sub1/?" do 
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/index" 
end 

# ------------- SUB2 -------------- 
get "/:theme/:sub1/:sub2/?" do 
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/index" 
end 

# ------------- SUB3 -------------- 
get "/:theme/:sub1/:sub2/:sub3/?" do 
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/#{params[:sub3]}/index" 
end 

# ------------- SUB4 -------------- 
get "/:theme/:sub1/:sub2/:sub3/:sub4/?" do 
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/#{params[:sub3]}/#{params[:sub4]}/index" 
end 

ответ

0

Вы можете использовать параметры Splat:

get "/:theme/*/?" do 
    haml "pages/#{params[:theme]}/#{params[:splat].to_s}/index".to_sym 
end 
+0

Спасибо! Хотя должно быть 'haml:" ' –

+0

Метод' to_sym' преобразует строку в символ. Я обновил ответ. –

+0

А, ок, круто, оба работают –

Смежные вопросы