我有输入,可以是字符串,也可以是html字符串。我已经想出如何识别字符串是否是html,但我不知道如何让浏览器将字符串解释为html。
例如,我不想在页面上使用<a href='www.google.com'> Click here!! </a>
,而是希望让实际的链接呈现为:Click Here
查看我尝试执行此操作的代码:
<div class="description">
<%= p.description %>
<div>
答案 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,因此您需要谨慎行事。