在没有Rails的情况下调用ERB:未定义的方法’raw’
我正在使用ERB引擎生成我的Rails网站页面的离线HTML版本。 当Rails显示时,页面显示很好,但我自己生成ERB时遇到问题(尽管使用相同的ERB模板)。
首先,我得到错误undefined method 't'
,我通过用替换所有
调用来解决它。
现在我得到undefined method 'raw'
。 我应该用其他东西替换所有调用吗? 如果有,那是什么?
raw
在actionpack / action_view库中被定义为helper,因此如果没有rails,则无法使用它。 但ERB模板显示其输出没有任何转义:
require 'erb' @person_name = "" ERB.new("<%= @person_name %>").result # => ""
因为这是为了逃避的目的,有ERB::Util#html_escape
方法
include ERB::Util ERB.new("<%= h @person_name %>").result # => "<script>name</script>"
虽然@warhog的回答是有效的,但include
是没有必要的。 它将所有ERB :: Util方法添加到当前类中,这通常是不希望的,并且可能导致意外的副作用(例如,如果您有另一个h
方法)。 相反,只需使用ERB :: Util类访问h
方法(或其他帮助程序):
ERB.new("<%= ERB::Util.h @person_name %>").result