1

我正在尝试将 tinyMCE 的内容存储到“详细”列中。

现在,当我显示内容时,它会显示所有<p>标签<i>标签等。这是 rails3 中的安全功能。

但我不希望<p>显示标签,我希望将其呈现为 HTML。

我发现的一种方法是<%= something.detail.html_safe %>

我认为的另一种方法是在模型中创建一个函数

def detail_safe
    return self.detail.html_safe
  end

并使用显示<%= something.detail_safe %>

无论哪种方式,我都需要<%= %>在很多地方更改标签。有更简单的解决方案吗?还是我应该在每个地方手动更改?

谢谢你。

4

2 回答 2

1

不管你怎么做,你都必须改变你所有的<%= %>.

您的选择是:

<%= something.detail_safe %>
<%= something.detail.html_safe %>
<%= raw something.detail %>

我能想到的唯一其他选择是关闭 XSS 保护 - 但不要那样做!

于 2011-05-27T11:15:57.257 回答
1

在模型中:

def detail
  self[:detail].html_safe if self[:detail]
end

请注意,在这种情况下,您总是会得到 html_safe 输出model_object.detail

于 2011-05-27T11:23:58.827 回答