2009-12-05 12 views
5

मैं एक छोटा सीनात्रा आधारित ऐप लिख रहा हूं और प्रत्येक दृश्य को लेआउट में विभिन्न आइटम डालने में सक्षम होना चाहता हूं, उदाहरण के लिए title या head में अतिरिक्त सीएसएस/जावास्क्रिप्ट संदर्भ।कई ब्लॉक के लिए दृश्य में

वर्तमान में मेरी लेआउट (ERB) इस तरह दिखता है (सरलीकृत):

<html> 
<head> 
    <title>Hard Coded Title Here</title> 
    <link rel="stylesheet" ... /> 
</head> 
<body> 
    <h1>Hard Coded Title Here</h1> 
    <div id="content"> 
     <%= yield %> 
    </div> 
</body> 
</html> 

बल्कि शीर्षक और सीएसएस/जे एस संदर्भ हार्ड कोडित की तुलना में, मैं इन पंक्तियों के साथ कुछ हासिल करना चाहते हैं:

<html> 
<head> 
    <title><%= yield :title %></title> 
    <link rel="stylesheet" ... /> 
    <%= yield :more_head_refs %> 
</head> 
<body> 
    <h1><%= yield :title %></h1> 
    <div id="content"> 
     <%= yield %> 
    </div> 
</body> 
</html> 

और प्रत्येक दृश्य के भीतर से उन ब्लॉकों के लिए सामग्री को परिभाषित करने में सक्षम हो।

क्या यह संभव है, और यदि ऐसा है तो मैं इसे करने के बारे में कैसे जाऊं?

उत्तर

4

मैं हाल ही में रेलस्काम्प में इस मुद्दे के खिलाफ आया और सौभाग्य से टिम लुकास मुझे कुछ फोर्क करने में सक्षम था और sinatra-content-for पर काम करने में कामयाब रहा। इसमें आपको जो चाहिए वह शामिल होगा।

+0

बहुत बढ़िया, ऐसा लगता है कि मैं वास्तव में क्या देख रहा हूं। धन्यवाद। –

+2

विकास तब से परियोजना के तहत जारी रहा है [sinatra-content-for2] (http://rubygems.org/gems/sinatra-content-for2)। – gioele

3

मैंने पाया यह, सिनात्रा में कार्यक्षमता 'content_for' रेल शैली के लिए सबसे मजबूत समाधान आप ERB Haml बजाय टेम्पलेट्स का उपयोग कर रहे है, खासकर यदि:

http://github.com/kematzy/sinatra-outputbuffer

0

तुम सिर्फ कर सकते हैं अपनी रूबी फ़ाइल में @ स्टाइलशीट का उपयोग करें