2011-09-22 23 views
22

मैं रेलवे में टेम्पलेटिंग के लिए underscore.js टेम्पलेट्स का उपयोग करने का प्रयास कर रहा था 2.3 ऐप जो में एक संपत्ति पैकेजर के रूप में जैमिट नहीं है।Underscore.js टेम्पलेट्स के साथ रेल

<script type="text/template" id="q-template"> 
    <div class="current-body"> 
     <span class="q-index"><%= title %></span> 
     <span class-"q-text"><%= body %></span> 
    </div> 
</script> 

रेल इन के रूप में ERB चर पार्स करने के लिए कोशिश करता है और एक ArgumentError फेंकता है:

यहाँ सरल खाका है। इस मामले में रेल के साथ अच्छी तरह से खेलने के लिए मैं अंडरस्कोर टेम्पलेट्स कैसे प्राप्त करूं? मुझसे कहां गलती हो रही है?

उत्तर

52

<%= %> के बजाय कुछ अन्य डिलीमीटर का उपयोग करें। उदाहरण के लिए, मूंछें शैली कोष्ठक {{= }} (लगाना) और {{ }} (मूल्यांकन) का उपयोग करने के लिए, अपने जावास्क्रिप्ट को यह कहीं जोड़ें:

_.templateSettings = { 
    interpolate: /\{\{\=(.+?)\}\}/g, 
    evaluate: /\{\{(.+?)\}\}/g 
}; 
+0

धन्यवाद, यह काम करता है। मैं _.template और _.template सेटिंग्स के लिए प्रलेखन के माध्यम से जा रहा था, लेकिन जब मैं प्रोजेक्ट स्थापित कर रहा था, तो किसी भी तरह से यह मेरे दिमाग को छोड़ दिया, और सोच रहा था कि यह जामिट संबंधित हो सकता है। – papdel

+3

धन्यवाद एफवाईआई: http://documentcloud.github.com/underscore/#template और http://stackoverflow.com/questions/5771742/underscore-js-templates-within-jsp – Francois

+6

'{{}}' और ' {{=}} 'यदि आप अपने टेम्पलेट्स में' if (x) {} 'शैली ब्लॉक का उपयोग करना चाहते हैं तो समस्याएं पैदा हो सकती हैं। उस मामले में '[%%] 'और' [% =%] 'का उपयोग करने के लिए शायद यह आसान है: –

25

आप अपनी पूरी परियोजना भर में टेम्पलेट सेटिंग्स बदलने के लिए नहीं करना चाहते हैं .. ।

ERB भागने टैग करता: <%= हो जाता है <%%=

<script type="text/template" id="q-template"> 
    <div class="current-body"> 
     <span class="q-index"><%%= title %></span> 
     <span class-"q-text"><%%= body %></span> 
    </div> 
</script> 

ध्यान दें कि बंद टैग एसटीआई है ll %>, %%> नहीं।


साइड नोट - मैं भी एक हियरडॉक का उपयोग कर outputting की कोशिश की। निम्न कोड सफलतापूर्वक चलता है लेकिन heredoc आदेशों के बीच पकड़ा गया एआरबी स्रोत कोड का एक गुच्छा आउटपुट करता है।

<script type="text/template" id="q-template"> 
<%= <<-heredoc %> 
    <div class="current-body"> 
     <span class="q-index"><%%= title %></span> 
     <span class-"q-text"><%%= body %></span> 
    </div> 
heredoc 
</script> 
संबंधित मुद्दे