Ruby on rails 3 在erb模板中禁用HTML转义

Ruby on rails 3 在erb模板中禁用HTML转义,ruby-on-rails-3,escaping,erb,Ruby On Rails 3,Escaping,Erb,在Rails3应用程序中,我有一个域类,其中一个属性存储纯HTML内容(这是一个博客应用程序,域类是Post) 在ERB模板中,我需要在HTML标记就位的情况下,按照格式化的方式显示属性的内容。但是,Rails正在逃避所有HTML标记!如何对此类属性禁用此行为 例如: somePost = Post.new somePost.content = "<strong> Hi, i'm here! </strong>" 尝试使用raw(somePost.content)。或者

在Rails3应用程序中,我有一个域类,其中一个属性存储纯HTML内容(这是一个博客应用程序,域类是Post)

在ERB模板中,我需要在HTML标记就位的情况下,按照格式化的方式显示属性的内容。但是,Rails正在逃避所有HTML标记!如何对此类属性禁用此行为

例如:

somePost = Post.new
somePost.content = "<strong> Hi, i'm here! </strong>"
尝试使用
raw(somePost.content)
。或者,
somePost.content.html\u safe
使用
raw(string)
,如图所示

7.4.3其他变更 您不再需要调用h(字符串)来转义HTML输出,默认情况下,它在所有视图模板中都处于启用状态。如果需要未转换的字符串,请调用raw(string)

基本上,你去了哪里

<%=h @model.attr %>

在您现在可以使用之前

<%= @model.attr %>
<%=raw @model.attr %>

你以前在哪里做的,现在可以使用

<%= @model.attr %>
<%=raw @model.attr %>

使用双等于表示结果不会转义

<%== somePost.content %>


看到这个关于它的问题-

IMHO raw比.html\u safe安全一点,因为raw(nil)写的是“”,其中nil.html\u safe会导致一个异常。html\u safe是Rails的一个实现细节,从来不是面向公众的API。应改用
raw(string)
方法。raw包装在html_-safe中。除了原始调用之外,它们也做同样的事情。这是我一直在寻找的答案,而不是公认的答案:)这基本上等同于HAML模板中的(而不仅仅是
=
)。