Rails 3:如何反转 ERB“<%=”默认行为,以便我可以注入 HTML?

发布于 2024-10-13 08:16:01 字数 952 浏览 8 评论 0 原文

我的问题与这个有关,但我正在尝试反转默认的Rails “<%=”的 3 行为,以便我可以注入 HTML。

在我的场景中,我有一个生成 HTML 的旧 Rails 2 插件。然后我的视图需要在页面中注入这个 HTML。

当这个插件创建像这样存储在变量 html_to_show: 中的 HTML 时

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p>

,在视图中我尝试显示 html_to_show 的内容,如下所示:

<%= html_to_show %>

...我在我的浏览器是这样的:

&lt;p class="notice"&gt;&lt;span&gt;&lt;/span&gt;Sorry about this, but we have a problem...&lt;/p&gt;&lt;p class="error"&gt;&lt;span&gt;&lt;/span&gt;Cannot go to next step&lt;/p&gt;

如何让 Rails 3 完全按原样注入 html_to_show 的内容,而不进行任何清理?

My question relates to this one, but I am trying to reverse the default Rails 3 behavior of "<%=" so that I can inject HTML.

In my scenario, I have an old Rails 2 plug that generates HTML. My view will then need to inject this HTML in the page.

When this plugin creates HTML like this stored in a variable html_to_show:

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p>

and in the view I try to show the contents of html_to_show like this:

<%= html_to_show %>

... what I get in my browser is this:

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p>

How can I get Rails 3 to inject the contents of html_to_show exactly as it is, without any sanitization?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

┊风居住的梦幻卍 2024-10-20 08:16:01

简短回答:

<%= html_to_show.html_safe %>

详细回答:

Rails 转义所有 html 以防止 XSS 攻击。添加 .html_safe 可防止转义。

Short answer:

<%= html_to_show.html_safe %>

Long answer:

Rails escapes all html to protect from XSS attacks. Adding .html_safe prevents the escaping.

萌能量女王 2024-10-20 08:16:01
<%= raw html_to_show %>

应该可以做到这一点。

<%= raw html_to_show %>

That should do it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文