2011-09-30 13 views
5

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

this question से उदाहरण के बाद मैंने एक कस्टम टेम्पलेट हैंडलर बनाया है इस तरह दिखता है:

module CommonModel 
    class Handler < ActionView::Template::Handler 
     include ActionView::Template::Handlers::Compilable 

     def compile(template) 
      template.source.inspect 
     end 

    end 
end 

ActionView::Template.register_template_handler :ejs, CommonModel::Handler 

तो मैं इसमें मेरे EJS कोड है कि एक आंशिक खाका बनाया: _jmvc_templates.html.ejs

<script type="text/ejs" id="my_ejs_template"> 
    <div>Some ejs here</div> 
</script> 

अपने मौजूदा टेम्पलेट के भीतर, मैं अपने में शामिल करने का प्रयास आंशिक:

<%= render 'path/to/my/ejs/templates/jmvc_templates' %> 

इस बिंदु पर, फ़ाइल शामिल किया गया है और मेरे हैंडलर प्रयोग किया जाता है, लेकिन सब कुछ बच रहा है, इसलिए मेरे टेम्पलेट में मेरी div इस तरह पेज को प्रदान की गई हो जाता है:

&lt;div%gt; 

मैं मुझे यकीन है कि मैं यहां कुछ स्पष्ट याद कर रहा हूं, लेकिन मुझे नहीं पता कि यह क्या हो सकता है ... मैं इस टेम्पलेट हैंडलर को अपने ईजेएस आधारित टेम्पलेट को इसमें शामिल करने के बिना कैसे प्राप्त कर सकता हूं?

संपादित करें:

मैंने पाया कि html_safe के साथ प्रस्तुत कॉल काम करता है:

<%= render('path/to/my/ejs/templates/jmvc_templates').html_safe %> 

यह एक kludge हालांकि की तरह लगता है - वहाँ एक रास्ता के इलाज के लिए ERB रेंडरर पाने के लिए हो गया है एचटीएमएल सुरक्षित पाठ के रूप में मेरे हैंडलर से पाठ।

+0

तो बीच कुछ अपने 'डीईएफ़ compile' और' <% = प्रस्तुत करना ...%> 'स्ट्रिंग के लिए कुछ है जो इसे वापस भेजता मोड में" सुरक्षित HTML नहीं "कर रही है। –

+0

समझ में आता है, लेकिन वह क्या होगा? मैं अन्यथा बॉक्स के बाहर रेल 3.1 का उपयोग कर रहा हूं ... –

+0

शायद आपको कच्चे का उपयोग करना चाहिए। [Html_safe बनाम ज बनाम कच्चे] चेक [1] [1]: http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html – charlysisto

उत्तर

0

शायद आपको कच्चे का उपयोग करना चाहिए। Check this

def compile(template) 
    raw template.source.inspect 
end 
+0

हाँ, आप ऐसा सोचेंगे - दुर्भाग्य से, यह या तो काम नहीं करता है। यह लगभग है जैसे रेल मेरे टेम्पलेट हैंडलर से स्वचालित रूप से आउटपुट से बच रहा है, इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं। मैं सोच रहा हूं कि कुछ प्रकार की कॉन्फ़िगरेशन नहीं है जिसे मुझे इस बिंदु पर ढूंढने की आवश्यकता है ... –

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