【发布时间】:2011-03-15 10:54:43
【问题描述】:
如何在 Rails 中存储包含粗体、项目符号和不同大小的格式化文本主体?
首先,text 字段类型是否有能力持有这个?
如果是这样,我需要做的只是使用富文本编辑器进行编辑,然后使用<pre> 显示是真的吗?
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-3 heroku richtext
如何在 Rails 中存储包含粗体、项目符号和不同大小的格式化文本主体?
首先,text 字段类型是否有能力持有这个?
如果是这样,我需要做的只是使用富文本编辑器进行编辑,然后使用<pre> 显示是真的吗?
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-3 heroku richtext
是的,text 类型旨在存储字符串。
通常的方法是使用生成 HTML 的 Javascript 富文本编辑器。您将原始 HTML 直接保存到数据库中,然后在显示时对其进行清理。这是为了防止人们在其他访问者查看他们的输入时执行的文本区域中输入 Javascript 和其他讨厌的东西。
Rails 3 默认清理你的输出,所以 all HTML 将被转义。您需要调用<%= @model.rich_text.html_safe %> 来跳过此清理过程,或者(更好!)调用<%= sanitize(@model.rich_text, :tags => %w(b i p)) %>,传入一个明确的允许标签列表。
我没有使用 Heroku 的经验,但我无法想象会有什么不同。
【讨论】:
h1 h2 h3 h4 b i p pre div ul ol li strong strike em a span img br
img 可能有问题,但这取决于您的观众(有些聪明人会到处放令人震惊的图像吗?)。其他的都很好。请注意,sanitize 也会删除所有属性,因此如果您想拥有img 标签,您需要允许src 属性。这是另一个潜在的风险,但 sanitize 方法有一个相当广泛和创造性的测试套件来捕捉讨厌的东西。