2010-03-30 5 views
5

Con rieles, si tengo una variable con contenido HTML, ¿cómo la publico, sin codificar en mi archivo de vista?¿Cómo no html_encode una variable en los rieles?

Este código, por ejemplo:

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

Salidas:

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

Respuesta

8

¿Está utilizando los carriles 3 Beta? Rails 2 de forma predeterminada no escapa HTML de su salida, por lo general, tiene que usar el ayudante h, consulte la publicación de Nate. Si está utilizando Rails 3, necesita usar el asistente raw o configurar su cadena como html safe. Ejemplos

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

O

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

comprobar la versión de Rails y volver a nosotros.

+0

Gracias Scott! ¡Eso fue todo! Uso Rails 3 Beta – deadkarma

+0

La palabra clave "raw" me funcionó en rails 4 también – emery

0

ActionView::Helpers::TextHelper proporciona un método strip_tags, que en lugar de simplemente escapar de las etiquetas, los elimina por completo.

fuente [referencia]:

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

Gracias solo, pero me gustaría que las etiquetas HTML estén intactas y representadas en la página – deadkarma

Cuestiones relacionadas