2011-11-30 10 views
6

के साथ एचटीएमएल विशेषताओं के अंदर इंटरपोलेट मैं बैकबोन.जेएस, अंडरस्कोर.जेएस, एचएएमएल, और कॉफ़ीस्क्रिप्ट का उपयोग कर एक एप्लीकेशन बना रहा हूं।अंडरस्कोर.जेएस

मुझे जो समस्या हो रही है वह HTML तत्व विशेषताओं के अंदर इंटरपोलेट करने के लिए चर हो रही है।

<% _.each(collection.models, function(document) { %> 
%tr 
    %td 
    %input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>"} 
    %td <%= document.attributes.id %> 
    %td <%= document.attributes.name %> 

    <% } %> 
<% }); %> 

वस्तु के मूल्यों इनपुट के मूल्य विशेषता भीतर <td> के अंदर ठीक से दिखाई है, लेकिन नहीं कर रहे हैं।

क्या किसी तत्व के गुणों के अंदर इंटरपोलेशन संभव है? मैं एक समाधान खोजने में सक्षम नहीं था।

धन्यवाद

+0

मैं अनुभव नहीं कर रहा हूँ (रेल 3.0.13 पर परीक्षण किया गया) इस क्षेत्र में, लेकिन अगर आपको यही चाहिए तो कृपया [यहां] (https://github.com/9elements/haml-coffee) देखें। यह गुणों में कॉफ़ीस्क्रिप्ट का समर्थन करता है। – kubetz

+0

मुझे यकीन नहीं है कि आपके कोड में क्या गड़बड़ है, लेकिन मैंने अंडरस्कोर टेम्पलेट्स के साथ इंटरपोलेशन का उपयोग किया है। – Jack

+0

समस्या एचटीएमएल तत्व विशेषताओं के अंदर इंटरपोलेशन के साथ है। – Chris

उत्तर

0

ऐसा लगता है कि आप ठीक ढंग से (अपने टेम्पलेट के अंत तक <% }); %> जोड़ने का प्रयास करें) टेम्पलेट में समारोह को बंद करने नहीं कर रहे हैं।

मैं वास्तव में HAML वाक्यविन्यास से परिचित नहीं हूं लेकिन यहां सादा HTML और अंडरस्कोर टेम्पलेट का उपयोग करके jsfiddle पर एक साधारण उदाहरण है। जैसा कि आप देख सकते हैं कि आप निश्चित रूप से तत्व गुणों के मध्य में इंटरपोलेशन का उपयोग कर सकते हैं।

+0

क्षमा करें, मैंने पूरा कोड शामिल नहीं किया है। मैं सवाल अपडेट कर रहा हूं। – Chris

+0

लिंक के लिए धन्यवाद। मैं देखता हूं कि वे तत्व के गुणों में सफलतापूर्वक इंटरपोल कर रहे हैं। – Chris

+0

तो शायद समस्या आपके एचएएमएल सिंटैक्स के साथ है, क्योंकि यदि आप jsfiddle को देखते हैं तो मैं आपको देख सकता हूं कि यह चेकबॉक्स के मूल्य विशेषता के अंदर सही तरीके से इंटरपोलेट करता है। – Jack

4

इस समस्या का समाधान HAML के :escape_attrs विकल्प का उपयोग करना है।

Haml::Engine.new(template, :escape_attrs => false).render 
2

आप html_safe का उपयोग करने का प्रयास कर सकते हैं जो स्ट्रिंग ऑब्जेक्ट्स पर एक विधि है। यह चर बयान में एचटीएमएल वर्ण (उदाहरण के लिए <) बच जाएंगे और अंडरस्कोर रनटाइम पर मूल्यांकन करने के लिए के लिए बरकरार छोड़ देंगे:

%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe} 

+0

यह रेल 3.2 पर मेरे लिए काम करता है। –

+0

यह रेल 4.2.6 पर काम नहीं कर रहा है, लेकिन मुझे यकीन नहीं है कि क्यों। मैं एक विशेषता कोड के बाहर एक ही कोड डाल सकता हूं, और मेरा '<' बच नहीं गया है, लेकिन विशेषता मान के अंदर, यह है। – sameers

+0

मेरा मतलब है, [html_safe पर प्रलेखन] (http://apidock.com/rails/String/html_safe) कहता है '.html_safe' 'raw()' के बराबर है, लेकिन हालांकि यह वास्तव में विशेषता गुणों के बराबर है , जब एचएएमएल टेम्पलेट इंजन के माध्यम से पारित किया गया, तो यह विशेषता मानों के अंदर नहीं है। यह बहुत रहस्यमय है। – sameers

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