You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Rails中Action Text(Trix Editor)生成内容的HTML标签?

嘿,这个问题我太熟了!很多用Action Text的开发者都会遇到这个情况——Trix编辑器生成的内容带着外层的trix-content div和各种HTML标签,要是只想拿纯文本内容,其实有好几种简单的解决办法,我给你拆解下:

1. 最直接:用Rails内置方法在视图中剥离标签

Rails自带了strip_tags辅助方法,专门用来移除所有HTML标签。如果只是想在页面上展示纯文本,直接在视图里这么写就行:

<%= strip_tags @your_model.your_rich_text_field.body %>

把@your_model和your_rich_text_field换成你实际的模型实例和用has_rich_text定义的字段名就行。这个方法会把所有HTML标签(包括外层的trix-content div、<br>这些)全部去掉,只留下纯文本内容。

2. 更智能的选择:用Action Text原生的纯文本转换

其实Action Text的RichText对象本身就提供了to_plain_text方法,这个方法比strip_tags更贴心——它会把HTML格式转换成更自然的纯文本格式,比如把<br>换成换行符,列表转换成带符号的条目,体验更好:

<%= @your_model.your_rich_text_field.to_plain_text %>

如果是在控制台测试,直接调用@your_model.your_rich_text_field.to_plain_text就能看到效果,我个人更推荐这个方法!

3. 持久化存储:在模型层保存纯文本版本

如果需要经常用到纯文本内容,不想每次都转换,可以在模型里加个回调,把纯文本版本存到数据库里:
首先给你的表加一个存储纯文本的字段:

rails generate migration AddPlainTextContentToYourModels plain_text_content:text
rails db:migrate

然后在模型里添加回调逻辑:

class YourModel < ApplicationRecord
  has_rich_text :your_rich_text_field
  after_save :sync_plain_text_content

  private

  def sync_plain_text_content
    self.plain_text_content = your_rich_text_field.to_plain_text
    save(validate: false) # 避免触发循环保存
  end
end

这样每次保存模型时,纯文本内容就会自动同步到plain_text_content字段里,之后直接调用@your_model.plain_text_content就能拿到无标签的内容了。

内容的提问来源于stack exchange,提问作者Rojan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 07:59:07