2010-03-30 12 views
5

Raylar ile, HTML içeriğiyle bir değişkenim varsa, çıktı dosyamda kodlanmamış olarak nasıl çıktı verebilirim? örneğinRaylarda bir değişkeni html_encode nasıl yapar?

Bu kod,:

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

Çıkışlar:

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

cevap

8

Eğer Raylar 3 Beta kullanıyor musunuz? Varsayılan olarak Rails 2, çıkışınızdan kaçamaz HTML, genellikle h yardımcısını kullanmak zorundasınız, Nate'in gönderisine bakın. Eğer Rails 3 kullanıyorsanız, raw yardımcısını kullanmanız veya dizginizi html güvenli olarak ayarlamanız gerekir. Örnekler

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

Ya

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

sizin Raylar sürümünü kontrol edin ve bize geri almak.

+0

Teşekkürler Scott! Öyleydi! Rails 3 Beta – deadkarma

+0

'u, raylar 4'te de benim için çalışan "ham" anahtar sözcüğünü kullanıyorum. – emery

0

ActionView::Helpers::TextHelper yerine etiketleri kaçış, onları tamamen kaldıran bir yöntem sayisinda strip_tags sağlar.

kaynak [referans]:

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

Yalnız teşekkürler, ancak HTML etiketlerinin sağlam ve sayfanın içinde görüntülenmesini istiyorum – deadkarma