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

Rails集成Trix编辑器后show页渲染HTML源码而非样式文本如何解决

问题原因&修复方案

1. 字段映射错误(核心问题)

你的Blogpost模型中声明的ActionText富文本字段为content,但表单里的富文本输入绑定的是blog_text字段,参数白名单同时保留了两个字段,导致Trix编辑器输出的HTML内容实际被存入了普通的blog_text字符串字段,没有走ActionText的富文本处理逻辑。Rails默认会转义普通字符串中的HTML特殊字符,输出时就会直接显示源码。
修正步骤:

  • 修改new.html.erb中的表单字段,将富文本输入绑定到content字段:
<%= f.input :content,
            as: :rich_text_area,
            required: true,
            autofocus: true,
            input_html: { class: "text-area-blog", autocomplete: "Blog Text" }%>
  • 清理控制器中的参数白名单,删除无用的blog_text字段:
def blogpost_params
  params.require(:blogpost).permit(:user_id, :blog_title, :blog_sub_heading, :photo, :content)
end
  • 若数据表中存在冗余的blog_text字段,可生成迁移文件删除该字段避免后续混淆。

2. 详情页输出逻辑修正

ActionText的富文本字段自带XSS安全处理,输出时直接调用字段即可自动渲染为带样式的HTML,不需要额外添加raw或html_safe标记。将你详情页中原来输出blog_text的代码修改为:

<%= @blogpost.content %>

3. 样式适配检查(可选)

如果修改后富文本样式未生效,确认你在详情页包裹富文本内容的容器添加了trix-content类,和actiontext.scss中的样式规则匹配:

<div class="trix-content">
  <%= @blogpost.content %>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:30:02