我正在使用 Rails 3。我想在 erb 模板内显示生成的 html 片段
<%= "<div>Foo Bar</div>" %>
Rails 对 div 标签进行编码。
如果我对 Rails 2 的看法是正确的<%=h
导致 html 转义。似乎Rails 3中已更改。如何在Rails 3中插入不编码的html片段?
问候,
阿列克谢.
我假设编码是指 html 转义:
要在 Rails 3 中输出原始 html,您可以使用三种不同的方法。
-
你可以使用raw
输出原始 html 的助手
<% some_string = "<div>Hello World!</div>" %>
<%= some_string %>
<!-- outputs: <div>Hello Worlds!</div> -->
<%=raw some_string %>
<!-- outputs: <div>Hello Worlds!</div> -->
更多信息:ActionView::Helpers::OutputSafetyHelper#raw http://api.rubyonrails.org/classes/ActionView/Helpers/OutputSafetyHelper.html#method-i-raw
-
您可以将字符串标记为html_safe
<% some_string = "<div>Hello World!</div>".html_safe %>
<%= some_string %>
<!-- outputs: <div>Hello World!</div> -->
更多信息:字符串#html_safe http://api.rubyonrails.org/classes/String.html#method-i-html_safe and ActiveSupport::SafeBuffer#new http://api.rubyonrails.org/classes/ActiveSupport/SafeBuffer.html#method-c-new
-
您可以使用以下命令清理您的输出sanitize
<%=sanitize "<div>Hello World!</div>", tags: %w( div ) %>
更多信息:ActionView::Helpers::SanitizeHelper#sanitze http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize
更多信息:
- SafeBuffers 和 Rails 3.0 http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/
- Railscast #204:Rails 3 中的 XSS 保护 http://railscasts.com/episodes/204-xss-protection-in-rails-3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)