Sinatra&HAML:为整个模板自动转义/转换不安全的HTML字符?

Kev*_*ker 4 html ruby haml sinatra

我有一个小的sinatra应用程序,我用来运行一个基本的网站.该网站的内容由客户提供,其中大部分来自PDF.因为我宁愿不必手动更换所有的<with &lt;&with &amp;,有没有办法配置HAML/Sinatra自动为我做?

基本上,我有一些看起来像这样的块:

%p
  large block of text here...
  multi-line so I can see it in my IDE...
  more lines here...
Run Code Online (Sandbox Code Playgroud)

我想找到一些配置选项,告诉HAML浏览所有内容并用他们的HTML实体对应物替换不安全的字符.

我尝试使用HTMLEntities gem,但这个网站有很多多行段落,我似乎无法让它工作.我的意思是我会在我的server.rb文件中做这样的事情:

def "/some_url"
  @encoder = HTMLEntities.new
  haml :some_template
end
Run Code Online (Sandbox Code Playgroud)

在我的模板中:

%p
  = @encoder.encode("Really long multiline string...
    some more lines here...
    and more lines...")
Run Code Online (Sandbox Code Playgroud)

它会吐出关于错过结账的错误).

mat*_*att 6

你可以使用:escaped过滤器:

%p
  :escaped
    A block of text here that might
    contain & and <.
Run Code Online (Sandbox Code Playgroud)

输出:

<p>
  A block of text here that might
  contain &amp; and &lt;.
</p>
Run Code Online (Sandbox Code Playgroud)

它不是很自动,但可能会减少所需的编辑.