2011-10-31 28 views
6

Estoy usando el ERB engine para generar una versión HTML sin conexión de una página del sitio web de Rails. La página se muestra excelente cuando se muestra con Rails, pero tengo problemas para generar con ERB solo (a pesar de usar la misma plantilla ERB).Llamar a ERB sin raíles: método no definido 'sin formato'

Primero recibí el error undefined method 't' y lo resolví reemplazando todas las llamadas <%=t(...)%> con <%=I18n.translate(...)%>.

Ahora obtengo undefined method 'raw'. ¿Debo reemplazar todas las llamadas <%=raw(...)%> con algo más? Si es así, ¿qué?

Respuesta

6

raw se define como ayudante en la biblioteca actionpack/action_view para que sin los rieles no pueda usarlo. Pero ERB de plantillas muestra su producción sin ningún tipo de escape:

require 'erb' 
@person_name = "<script>name</script>" 
ERB.new("<%= @person_name %>").result # => "<script>name</script>" 

Y debido a esto para el propósito de escapar de allí es ERB::Util#html_escape método

include ERB::Util 
ERB.new("<%= h @person_name %>").result # => "&lt;script&gt;name&lt;/script&gt;" 
+0

yo preferiría usar el mismo archivo de ERB, no uno con prima y uno sin ... Agregué 'incluir OutputSafetyHelper' (al igual que ya incluí mis ayudantes personalizados), pero obtener' sin inicializar constante OutputSafetyHelper' –

+3

try 'incluir ActionView :: Helpers :: OutputSafetyHelper' –

+2

Sí, Marian tiene razón. Y no te olvides de 'require 'action_view''. Y si usa la versión de Rails anterior 3.1.0, debe usar 'ActionView :: Helpers :: RawOutputHelper' en lugar de' OutputSafetyHelper ' – WarHog