动态呈现字符串为html

时间:2011-06-08 05:13:23

标签: ruby-on-rails ruby

我有输入,可以是字符串,也可以是html字符串。我已经想出如何识别字符串是否是html,但我不知道如何让浏览器将字符串解释为html。

例如,我不想在页面上使用<a href='www.google.com'> Click here!! </a>,而是希望让实际的链接呈现为:Click Here

查看我尝试执行此操作的代码:

<div class="description">    
  <%= p.description %>
<div>

2 个答案:

答案 0 :(得分:4)

您需要以两种方式之一将字符串标记为'html safe':

<%= raw @string %>

...或明确将字符串标记为html_safe:

<%= @string.html_safe %>

但是:请记住,如果此输入来自不受信任的用户(即除您以外的任何人!),那么这可能是一个冒险的策略,因为它将允许跨站点脚本攻击。请务必阅读导轨security guide,了解有关此风险以及如何有效缓解风险的更多信息。

答案 1 :(得分:2)

如果您的代码如下所示,您需要使用raw helper

@your_bit_of_html = '<a href="www.google.com"> Click here!! </a>'

然后您的视图ERB应如下所示:

<%= raw @your_bit_of_html %>

而且,既然您已经包含了ERB的样本:

<div class="description">    
  <%= raw p.description %>
<div>

使用raw假设您已正确编码并清理了您要输出的任何HTML,因此您需要谨慎行事。