Rails:html_escape不起作用

时间:2009-09-26 17:15:31

标签: ruby-on-rails erb

由于某些原因,html转义在我的Rails应用程序中无效。即使我写了像

这样的东西
<%=h '©äö' %> 

它没有将任何字符转换为HTML实体。

我不知道可能是什么。它工作总是很好,现在突然间没有。

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

öä是HTML中的有效字符。即使有HTML实体,也无需转义它们。这些实体是方便的,而不是必需的 - 只要声明的编码(HTTP标头)和实际的字符编码匹配,如果它们按字面意思出现就没有问题。

唯一必须转义的字符是<>&",就像XML一样。

答案 1 :(得分:2)

我会说h只替换HTML特殊字符&lt;,&gt;,&amp;并且“请查看h函数后面的Rails ERB::Util.html_escape的文档。

答案 2 :(得分:1)

Google sitemap requires fully escaped URLs,因此在这种情况下,您需要转义所有特殊和国际字符。

htmlentities library为您做到了这一点。

我甚至在application_helper.rb

中写了一个小包装器
def html_entity_escape(s)
  require 'htmlentities'
  @html_coder ||= HTMLEntities.new
  @html_coder.encode(s)
end