2011-11-15 8 views
6

मैं बैकबोन सीखने की कोशिश कर रहा एक रेल डेवलपर हूं और फिर मैं इस समस्या में भाग गया: चूंकि Underscore टेम्पलेट्स में <%=%> जैसे प्रतीक शामिल हैं, मुझे लगता है कि टेम्पलेट्स को erb फ़ाइलों में शामिल नहीं किया जा सकता है, तो क्या यह रेलवे आंशिक है हर एक टेम्पलेट? और यह क्या विस्तार होना चाहिए?रेलवे ढांचे में जहां मैं अपने बैकबोन टेम्पलेट्स रखना चाहिए?

उत्तर

12

आप खुलने वाला टैग में दो % का उपयोग करके ERB प्रतीकों बच सकते हैं, और रेल विचारों में अपने रीढ़ टेम्पलेट्स डाल:

<script type='text/template' id="my-template'> 
    <%%= name %> 
</script> 

इच्छा उत्पादन अपने पृष्ठ में निम्नलिखित:

<script type='text/template' id="my-template'> 
    <%= name %> 
</script> 

अपने बैकबोन टेम्पलेट्स को सीधे अपने रेल विचारों में डालकर आईएमएचओ सबसे अच्छा विकल्प है जब आप सीखने की कोशिश कर रहे हैं। आप पहले से ही नई अवधारणाओं के साथ कुश्ती कर रहे हैं, कोई और बाधा जोड़ने की जरूरत नहीं है।

+0

ग्रेट टिप, मुझे यह नहीं पता था।दरअसल मैं जेएसटी का उपयोग करता हूं जो संपत्तियों के अंदर एक पेड़ में साफ रूप से संग्रहीत होता है – apneadiving

+0

मैं अंडरस्कोर टेम्पलेट्स के लिए कस्टम रेगेक्स का उपयोग कर रहा था। दो '%' टिप के लिए धन्यवाद। – Agent47DarkSoul

-3

आपको अपने बैकबोन टेम्पलेट्स कहां रखना चाहिए? मैं कहीं नहीं कहूंगा। मेरा मानना ​​है कि अधिकांश रेल अनुप्रयोगों में, सर्वर को HTML के सभी प्रतिपादन के लिए ज़िम्मेदार होना चाहिए, जबकि क्लाइंट-साइड जावास्क्रिप्ट को एचओएम में प्रस्तुत एचटीएमएल डालने के लिए ज़िम्मेदार होना चाहिए। अन्य चीजों के अलावा, यह I18n आसान बनाता है।

अपवाद तब होगा जब रेल का उपयोग केवल उस अनुप्रयोग के लिए हल्के बैकएंड के रूप में किया जा रहा है जो ज्यादातर क्लाइंट पक्ष पर चलता है (हालांकि उस स्थिति में, आप सिनात्रा या इसके बजाय कुछ उपयोग करना चाहेंगे)। इस मामले में, रेल को शायद कुछ भी प्रस्तुत करना चाहिए, और जेएस सभी प्रतिपादन करना चाहिए।

अंतर्निहित सिद्धांत पर ध्यान दें। या तो सभी प्रतिपादन के लिए सर्वर जिम्मेदार होना चाहिए, या ग्राहक को चाहिए। इसे विभाजित करने से जीवन कठिन हो जाएगा।

+0

प्रतिपादन के छोटे टुकड़ों के बारे में क्या, टेबल पंक्तियों की तरह? –

+0

वही जवाब। प्रतिपादन विभाजित मत करो। या क्या मैं आपके प्रश्न को गलत समझता हूं? –

+0

शायद मैं जवाब को गलत समझ सकता हूं। खैर, 'Backbone.js' का उपयोग करने के लिए, मुझे कहीं और टेम्पलेट्स लिखना होगा। यह टेम्पलेट्स '<%= %>' टैग का उपयोग करते हैं और मेरा प्रश्न इस बात के बारे में था कि क्या रेल को क्लाइंट को इस टैग को प्रस्तुत करने का कोई तरीका है या क्या कोई प्रारूप है जिसका उपयोग मैं Backbone.js (Underscore.js) टेम्पलेट्स को अधिक आसानी से प्रस्तुत करने के लिए कर सकता हूं। –

4

रेल 3.1 से शुरू होने से, यह दो चीजें प्रदान करता है जो बैकबोन टेम्पलेट्स के साथ काम करना थोड़ा आसान बनाता है: संपत्ति पाइपलाइन, और स्वचालित जेएसटी (जावास्क्रिप्ट टेम्पलेट) संकलन।

app/assets फ़ोल्डर में templates नामक एक निर्देशिका बनाएं। यह निर्देशिका स्वचालित रूप से संपत्ति पाइपलाइन द्वारा उठाई जाएगी।

अगला, jst के विस्तार के साथ उस निर्देशिका में फ़ाइलों का नाम दें और आप जिस टेम्पलेट को बना रहे हैं उसका प्रकार ejs (एम्बेडेड जावास्क्रिप्ट)। आप उन्हें निर्देशिका में भी घोंसला कर सकते हैं। उदाहरण के लिए:

app/assets/templates/my_template.jst.ejs 
app/assets/templates/bookmarks/show.jst.ejs 

संपत्ति पाइप लाइन भी आप बस फाइल एक्सटेंशन बदलते (और किसी भी आवश्यक जवाहरात सहित) द्वारा एम्बेडेड coffeescript, मूँछ, हैंडल, आदि जैसे अन्य templating भाषाओं का उपयोग करने की अनुमति देता है।

अब आप अपने रीढ़ विचारों में अपने JST टेम्पलेट्स को संदर्भित करने के लिए, बस फ़ाइल नाम के लिए पथ का उपयोग करें:

var Bookmark = Backbone.View.extend({ 
    template: JST['bookmarks/show'], 
    render: function() { 
    this.$el.html(this.template(this.model.attributes)); 
    return this; 
    } 
}); 

आप अपने application.js को यह लाइन जोड़ने की जरूरत हो सकता है:

// require_tree ../templates 

यहाँ एक है अच्छा लेख जो यह सब कुछ और विस्तार से समझाता है: http://www.bigjason.com/blog/precompiled-javascript-templates-rails-3-1

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