Rails WYSIWYG显示代码而非样式化内容问题求助
解决Froala编辑器内容在Rails Show页面显示代码而非样式化的问题
我之前也碰到过一模一样的坑,这大概率是Rails默认的HTML转义机制在作祟!让我一步步帮你搞定:
核心原因
Froala编辑器生成的是带HTML标签的富文本内容,但Rails为了防止XSS攻击,默认会把所有输出的HTML转义成纯文本——所以你看到的不是样式化的内容,而是一堆被转义后的标签代码。
具体解决步骤
1. 先确认存储的内容是正确的HTML
先去你的数据库里检查对应post记录的content字段,看看是不是包含完整的HTML标签(比如<p>测试内容</p>、<strong>加粗文本</strong>这类)。从你贴的_form代码来看,编辑器初始化脚本是没问题的,大概率存储是正常的,但确认一下能避免走弯路。
2. 在Show页面关闭不必要的HTML转义
打开你的show.html.erb,找到输出文章内容的代码段,把原来的转义输出改成以下两种方式之一:
方式一:使用raw方法
<%= raw @post.content %>
方式二:使用html_safe方法
<%= @post.content.html_safe %>
这两种写法都会告诉Rails:“这段内容是安全的,直接渲染成HTML”,这样Froala编辑的样式就能正常显示了。
3. 安全提醒(非常重要!)
如果你的网站允许普通用户提交内容,直接用上面的方法可能会有XSS攻击风险。这时候建议用Rails内置的sanitize方法,它会自动过滤掉<script>这类危险标签,同时保留富文本的样式:
<%= sanitize @post.content %>
内容的提问来源于stack exchange,提问作者mark30
相关产品推荐
相关产品推荐

