gpt4 book ai didi

ruby-on-rails - RHTML 在输出中显示 HTML 标签

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:12 27 4
gpt4 key购买 nike

我在 Rails 中有一个 RHTML View ,其中的输出来 self 的 MongoDB 集合。使用迭代 block 可以正确输出数据,但每当我尝试在我的数据库中添加 HTML 标记时,它们都不会呈现在 HTML 输出中,而只是显示出来。

<%
@posts.find().each do |post|
%>
<h1><%=post["name"]%></h1>
<p><%=post["body"] %></p>
<p><%=post["timestamp"]%></p>
<%
end
%>

但是,例如,如果我有

<p>Test</p>

在我的数据库中,标签将被呈现,而不是被打印。

最佳答案

这是 Rails 3 中内置的安全预防措施。它可以防止 XSS(跨站点脚本)问题。

如果添加 raw你会得到你想要的输出。

<% @posts.each do |post| %> 
<h1><%=raw post["name"]%></h1>
<p><%=raw post["body"] %></p>
<p><%=raw post["timestamp"]%></p>
<% end %>

但是,如果您要存储用户创建的任意 HTML,我不建议您这样做,除非您在将输入存储到数据库之前对输入进行清理。

编辑:

另一种选择:使用 sanitize helper代替 raw ,例如<%=sanitize post["name"], :tags => "p" %>允许 <p>标签。

关于ruby-on-rails - RHTML 在输出中显示 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4450253/

27 4 0