2010-08-29 10 views
15

मेरे पास कुछ जावास्क्रिप्ट के साथ .html.erb फ़ाइल है। मैं ऐसा कुछ करना चाहता हूं:जावास्क्रिप्ट में रूबी को एम्बेड करने के लिए कैसे करें (रेल + .html.erb फ़ाइल)

var stuff = '<div><%= @ruby_var.title %></div>' 

ऐसा करने का सबसे अच्छा तरीका क्या है? मैं पूरी तरह से बंद हो सकता है ... धन्यवाद।

उत्तर

2

रूबी क्लाइंट पर नहीं चलाया जा सकता है, कम से कम विशेष ब्राउज़र प्लगइन के साथ नहीं। इसके बजाए, जावास्क्रिप्ट से अपने रूबी वेब एप्लिकेशन से पूछने के लिए AJAX और RJS का उपयोग करके देखें और अपने पृष्ठ में लौटने वाले किसी भी टेक्स्ट को डालें।

अधिक जानकारी के बिना, मुझे नहीं लगता कि आपको कोई बेहतर उत्तर मिल जाएगा। मैं भी पूरी तरह से बंद हो सकता हूं, क्योंकि मैं केवल अनुमान लगा रहा हूं कि आप वास्तव में क्या करना चाहते हैं।

10
<script> 
var stuff = '<div><%=escape_javascript @ruby_var.title %></div>' 
</script> 

आपकी .html.erb फ़ाइल में ठीक काम करेगा।

3

आप .html.erb फ़ाइल में जावास्क्रिप्ट को शामिल करने के लिए javascript_tag function का उपयोग कर सकते हैं।

उदाहरण:

javascript_tag "alert('This is a test')" 

अपने foo.html.erb में ब्राउज़र को

<script type="text/javascript"> 
//<![CDATA[ 
alert('This is a test') 
//]]> 
</script> 

वापस आ जाएगी।

19

सुरक्षित रूप से इस आप to_json उपयोग करने की आवश्यकता करने के लिए:

<%= javascript_tag do %> 
    var stuff = <%= @ruby_var.title.to_json %>; 
<% end %> 

इससे यह सुनिश्चित होगा अपने कोड का उल्लंघन नहीं करती है, तो @ ruby_var.title उस में एक उद्धरण है। <% के आसपास कोई उद्धरण =%>, to_json आप के लिए है कि का ख्याल रखता है देखते हैं कि

<%= javascript_tag do %> 
    var stuff = <%= "<div>#{@ruby_var.title}</div>".to_json %>; 
<% end %> 

नोट:

divs मैं क्या करना होगा शामिल करने के लिए।

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

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