2010-06-07 4 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 : '이어야합니다.' –

+0

'to_sym' 메서드는 문자열을 심볼로 변환합니다. 응답을 업데이트했습니다. –

+0

아, 멋지다, 둘 다 작동합니다. –

관련 문제