Sco*_*col 3 ruby views ruby-on-rails rhtml ruby-on-rails-3
我在Rails中有一个RHTML视图,其输出来自我的MongoDB集合.使用迭代块正确输出数据,但每当我尝试在我的数据库中使用HTML标记时,它们都不会在HTML输出中呈现,而只是显示它们.
<%
@posts.find().each do |post|
%>
<h1><%=post["name"]%></h1>
<p><%=post["body"] %></p>
<p><%=post["timestamp"]%></p>
<%
end
%>
Run Code Online (Sandbox Code Playgroud)
但是,例如,如果我有
<p>Test</p>
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,标记将被渲染,而不是被打印.
这是一个安全预防措施,现已内置到Rails 3中.它可以防止XSS(跨站点脚本)问题.
如果你添加raw你将获得你想要的输出.
<% @posts.each do |post| %>
<h1><%=raw post["name"]%></h1>
<p><%=raw post["body"] %></p>
<p><%=raw post["timestamp"]%></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是,如果您要存储用户创建的任意HTML,我建议您不要这样做,除非您在将输入存储到数据库之前清理输入.
编辑:
另一种选择:使用sanitize助手代替raw,例如<%=sanitize post["name"], :tags => "p" %>允许<p>标签.
| 归档时间: |
|
| 查看次数: |
2316 次 |
| 最近记录: |