我正在尝试将tinyMCE的内容存储到“detail”coloumn中。
现在,当我显示内容时,会显示所有<p>
代码<i>
代码等。
这是rails3中的安全功能。
但我不希望显示<p>
标记,我希望它以HTML格式呈现。
我发现的一种方法是<%= something.detail.html_safe %>
我认为另一种方式是在模型中创建一个函数,如
def detail_safe
return self.detail.html_safe
end
并使用<%= something.detail_safe %>
我需要在许多地方更改<%= %>
标记。有更简单的解决方案吗?或者我应该在每个地方手动更换?
谢谢。
答案 0 :(得分:1)
无论您如何操作,都必须更改所有<%= %>
。
您的选择是:
<%= something.detail_safe %>
<%= something.detail.html_safe %>
<%= raw something.detail %>
我能想到的唯一其他选择是关闭XSS保护 - 但不要这样做!
答案 1 :(得分:1)
在模型中:
def detail
self[:detail].html_safe if self[:detail]
end
请注意,执行model_object.detail
时,您将始终获得html_safe输出。