用途:在 Rails 应用中实现富文本编辑与渲染,覆盖从安装到测试的完整流程。
主要能力:Action Text 通过多态关联把富文本存于独立的 action_text_rich_texts 表,而非模型表;自动处理 HTML 清洗、渲染、Active Storage 附件与基于 Signed GlobalID 的嵌入对象。编辑器方面,Trix 适用于 Rails 6 及以上,Lexxy 为 Basecamp 推出的现代替代方案,适用于 Rails 8.1+,具备更好的暗色模式与 CSS 自定义属性。
使用方式:先检查是否已安装,未安装则执行 bin/rails action_text:install 与 bin/rails db:migrate;使用 Lexxy 需在 Gemfile 添加 gem "lexxy" 并 bundle install,且样式表须先加载 lexxy 再加载应用样式。模型用 has_rich_text :content 声明,表单用 form.rich_text_area :content,控制器需允许该属性。渲染时直接输出 @article.content 即为已清洗的安全 HTML,纯文本用 to_plain_text。列表页应使用 with_rich_text_字段名 或 with_rich_text_字段名_and_embeds 预加载以避免 N+1。附件依赖 Active Storage 与 libvips/ImageMagick。自定义嵌入需 include ActionText::Attachable 并提供 partial。
适用场景:为模型添加富文本字段、配置编辑器外观、安全渲染内容、处理图片文件附件、嵌入用户或产品等对象、修复 N+1、样式化编辑器与内容、测试富文本功能。
限制与注意:不要为模型表添加富文本列;不要手动二次清洗 HTML;扩展清洗白名单(如 iframe、script)会引入 XSS 风险;缺少 libvips 会导致图片渲染失败;删除的嵌入对象需通过 to_missing_attachable_partial_path 处理。UUID 主键需调整迁移中的 references 类型。具体版本兼容与更多细节以官方资料为准。