2012-05-29 9 views
10

एक छोटे डेवलपर प्रलेखन ऐप के लिए, मैं केवल एचएएमएल फाइलों की सेवा के लिए एक सिनात्रा ऐप स्थापित करना चाहता हूं। सीएसएस फाइलों और छवियों के लिए मार्गों के बाद, मुझे एक ऐसा मार्ग चाहिए जो आपके द्वारा अनुरोध किए गए किसी भी पथ के लिए HAML फ़ाइल लोड करने का प्रयास करता है।मैं सिनात्रा को एक कैचल, डिफ़ॉल्ट मार्ग कैसे दे सकता हूं?

उदाहरण के लिए:

  • /index भार views/index.haml, अगर यह
  • /this/page/might/exist भार views/this/page/might/exist.haml मौजूद है, यदि वह मौजूद

मैं इस मार्ग में निर्दिष्ट करना होगा?

उत्तर

17

ऐसा लगता है कि यह यह करना होगा: `/ *` ब्लॉक कर देगा अन्यथा मोहक मार्ग

get '/*' do 
    viewname = params[:splat].first # eg "some/path/here" 

    if File.exist?("views/#{viewname}.haml") 
    haml :"#{viewname}" 

    else 
    "Nopers, I can't find it." 
    end 
end 
+1

मैं अपने सभी अन्य मार्गों 'के बाद' यह डाल करने के लिए, वे संसाधित सुनिश्चित करने के लिए किया था, अन्य सभी मार्ग – Rots

+0

यदि आपको उस ब्लॉक में 500 त्रुटि मिलती है तो क्या होता है? – nroose

+0

@ एनरोस - एक 500 त्रुटि कुछ ऐसा वेब सर्वर लौटाएगा; यह रूबी में नहीं हो सकता है। यदि, उदाहरण के लिए, 'हैमल' कॉल एक त्रुटि उठाता है, तो आप सही हैं कि मैं इसे नहीं बचाऊंगा और मेरी साइट 500 लौटाएगी। साथ ही, अधिक सही होने के लिए, मुझे हेडर में 404 स्टेटस कोड भेजना चाहिए शरीर भेजना "मैं इसे नहीं ढूंढ सकता"। लेकिन यह सिर्फ एक साधारण उदाहरण है। –

संबंधित मुद्दे