小编典典

Ruby on Rails:如何将字符串呈现为 HTML?

all

我有

@str = "<b>Hi</b>"

在我的erb看来:

<%= @str %>

页面上将显示的是:<b>Hi</b>当我真正想要的是 Hi 时。将字符串“解释”为 HTML 标记的 ruby​​ 方法是什么?


编辑 :情况

@str = "<span class=\"classname\">hello</span>"

如果在我看来我这样做

<%raw @str %>

HTML 源代码是<span class=\"classname\">hello</span> 我真正想要的地方<span class="classname">hello</span>(没有转义双引号的反斜杠)。“取消转义”这些双引号的最佳方法是什么?


阅读 75

收藏
2022-08-27

共1个答案

小编典典

更新

出于安全原因,建议使用sanitize而不是html_safe.

<%= sanitize @str %>

发生的事情是,作为一种安全措施,Rails 正在为您转义您的字符串,因为它可能嵌入了恶意代码。但是如果你告诉 Rails
你的字符串是html_safe,它会直接通过。

@str = "<b>Hi</b>".html_safe
<%= @str %>

或者

@str = "<b>Hi</b>"
<%= @str.html_safe %>

Usingraw工作正常,但它所做的只是将字符串转换为字符串,然后调用html_safe.
当我知道我有一个字符串时,我更喜欢html_safe直接调用,因为它跳过了一个不必要的步骤并使发生的事情更清楚。关于字符串转义和 XSS
保护的详细信息在这个 Asciicast中。

2022-08-27