2010-06-07 21 views
1

我需要在我的sinatra應用程序中嵌套的子目錄,我怎樣才能簡化這個重複的代碼?如何簡化我的嵌套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

您可以使用圖示參數:

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

謝謝!雖然應該是'haml:'' – 2010-06-07 15:45:30

+0

'to_sym'方法會將字符串轉換爲符號。我已經更新了答案。 – 2010-06-07 15:48:41

+0

好的,很酷,都可以工作 – 2010-06-07 16:06:44