2011-10-31 14 views
6

Sto utilizzando lo ERB engine per generare una versione HTML offline di una pagina del mio sito Web Rails. La pagina è eccezionale se mostrata da Rails, ma ho difficoltà a generare con ERB da solo (nonostante utilizzi lo stesso modello ERB).Chiamare ERB senza Rails: metodo non definito 'raw'

Prima ricevevo l'errore undefined method 't' e l'ho risolto sostituendo tutte le chiamate <%=t(...)%> con <%=I18n.translate(...)%>.

Ora ho undefined method 'raw'. Devo sostituire tutte le chiamate <%=raw(...)%> con qualcos'altro? Se si, cosa?

risposta

6

raw è definito come helper nella libreria actionpack/action_view in modo che senza binari non è possibile utilizzarlo. Ma ERB template mostra la sua uscita senza alcuna fuga:

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

E per questo a scopo di sfuggire c'è ERB::Util#html_escape metodo

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

io preferirei utilizzare lo stesso file ERB, non uno con crudo e uno senza ... ho aggiunto 'include OutputSafetyHelper' (come ho già incluso i miei helper personalizzati), ma ottengo' costante non inizializzato OutputSafetyHelper' –

+3

try 'include ActionView :: Helpers :: OutputSafetyHelper' –

+2

Sì, Marian ha ragione. E non dimenticarti di 'require' action_view''. E se usi la versione di Rails precedente alla 3.1.0 dovresti usare 'ActionView :: Helpers :: RawOutputHelper' invece di' OutputSafetyHelper ' – WarHog

Problemi correlati