2010-03-30 11 views
5

रेल के साथ, यदि मेरे पास HTML सामग्री के साथ एक चर है, तो मैं इसे कैसे आउटपुट करूं, मेरी दृश्य फ़ाइल में अनएन्कोड किया गया?रेल में एक चर को html_encode कैसे नहीं करता है?

इस कोड, उदाहरण के लिए:

<% my_variable = "<b>Some Bolded Text</b>" %> 
<%= my_variable %> 

आउटपुट:

&lt;b&gt;Some Bolded Text&lt;/b&gt; 

उत्तर

8

आप रेल 3 बीटा का उपयोग कर रहे हैं? डिफ़ॉल्ट रूप से रेल 2 एचटीएमएल आपके आउटपुट से बच नहीं जाता है, आपको आमतौर पर h सहायक का उपयोग करना होगा, नेट की पोस्ट देखें। यदि आप रेल 3 का उपयोग कर रहे हैं तो आपको या तो raw सहायक का उपयोग करना होगा या अपनी स्ट्रिंग को HTML सुरक्षित के रूप में सेट करना होगा। उदाहरण

<% my_variable = "<b>Some Bolded Text</b>" %> 
<%= raw my_variable %> 

या

<% my_variable = "<b>Some Bolded Text</b>".html_safe %> 
<%= my_variable %> 

अपने रेल संस्करण की जाँच करें और हमें वापस मिलता है।

+0

धन्यवाद स्कॉट में प्रस्तुत किया जाए! वह यह था! मैं रेल 3 बीटा – deadkarma

+0

का उपयोग कर रहा हूं "कच्चे" कीवर्ड ने रेल 4 में भी मेरे लिए काम किया – emery

0

ActionView::Helpers::TextHelper एक विधि strip_tags, जो सिर्फ टैग भागने के बजाय, उन्हें पूरी तरह से निकाल देता है प्रदान करता है।

स्रोत [संदर्भ]:

def strip_tags(html)  
    return html if html.blank? 
    if html.index("<") 
     text = "" 
     tokenizer = HTML::Tokenizer.new(html) 
     while token = tokenizer.next 
     node = HTML::Node.parse(nil, 0, 0, token, false) 
     # result is only the content of any Text nodes 
     text << node.to_s if node.class == HTML::Text 
     end 
     # strip any comments, and if they have a newline at the end (ie. line with 
     # only a comment) strip that too 
     text.gsub(/<!--(.*?)-->[\n]?/m, "") 
    else 
     html # already plain text 
    end 
    end 

<%= strip_tags(my_variable) %> 
+0

धन्यवाद एकल, लेकिन मैं चाहता हूं कि एचटीएमएल टैग को बरकरार रखा जाए और पेज – deadkarma

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