假设我有以下字符串
@x = "<a href='#'>Turn me into a link</a>"
在我看来,我希望显示一个链接。也就是说,我不希望 @x 中的所有内容都被转义并显示为字符串。使用和使用有什么区别
<%= raw @x %> <%= h @x %> <%= @x.html_safe %>
?
考虑 Rails 3:
html_safe实际上“将字符串设置为 HTML Safe”(它比这要复杂一些,但基本上就是这样)。这样,您可以随意从帮助程序或模型返回 HTML 安全字符串。
html_safe
h只能在控制器或视图中使用,因为它来自助手。它将强制输出被转义。它并没有真正被弃用,但您很可能不再使用它:唯一的用途是“恢复”html_safe声明,这很不寻常。
h
在你的表达式前面加上raw实际上等同于在它上面调用to_schained with html_safe,但它是在一个帮助器上声明的,就像h,所以它只能在控制器和视图上使用。
raw
to_s
“ SafeBuffers and Rails 3.0 ” 很好地解释了SafeBuffers(执行html_safe魔法的类)如何工作。
SafeBuffer