2011-10-31 28 views
6

benim Raylar web sitesinde bir sayfa çevrimdışı bir HTML sürümünü oluşturmak için ERB engine kullanıyorum. Sayfa Rails tarafından gösterildiğinde harika görünüyor, ancak ERB ile kendi başıma sorun yaratıyorum (aynı ERB şablonunu kullanmaya rağmen). : tanımsız yöntem -ham‖

Önce hatayı undefined method 't' başlamıştı ve ben <%=I18n.translate(...)%> tüm <%=t(...)%> çağrıları değiştirerek bunu çözdü.

Şimdi undefined method 'raw' olsun. Tüm çağrılarını başka bir şeyle değiştirmeliyim mi? Evet ise ne? raylar olmadan bunu kullanamaz böylece

cevap

6

raw actionpack/action_view kitaplığında yardımcı olarak tanımlanır. Ama ERB çiftleşmiş gösterir herhangi kaçması olmadan çıkış:

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

Ve çünkü, orada kaçan amacıyla bu ERB::Util#html_escape yöntem

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

çiğ ile bir değil, aynı ERB dosyasını kullanmayı tercih ediyorum ve ... olmadan tek ekledim 'OutputSafetyHelper' arasında (zaten özel yardımcıları dahil gibi), ancak' başlatılmamış sabit OutputSafetyHelper' –

+3

deneyin 'almak ActionView :: yardımcıları :: OutputSafetyHelper' –

+2

Evet, Marian haklı sayılabilir. Ve 'action_view' gerektiren 'unutma. Ve 3.1.0 öncesi Rails sürümünü kullanırsanız, 'OutputSafetyHelper' – WarHog

İlgili konular