我的问题与this one有关,但我试图反转“<%=”的默认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 %>
...我在浏览器中得到的是:
<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>
如何让Rails 3完全按原样注入html_to_show
的内容,而不进行任何清理?
答案 0 :(得分:7)
简短回答:
<%= html_to_show.html_safe %>
答案很长:
Rails逃脱所有HTML以防止XSS攻击。添加.html_safe
会阻止转义。
答案 1 :(得分:3)
<%= raw html_to_show %>
应该这样做。