我有一个带有标题字段的模型。当我发布到服务器时,我看到:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"3Le7aLitPd6MzWFeB0ofI9wk1IuhybNswjG9N+KgJJc=", "poll"=>{"title"=>"Hello &"}}
问题是DB然后保存为:
Hello &
所以稍后当我在网站上输出字段时,它显示为Hello &
处理此问题的正确方法是什么?我希望支持输入&
,但同时不允许用户提交html或js标记。
由于
答案 0 :(得分:1)
Sanitize.clean
输出HTML,而不是纯文本,因此您的&符号会转换为HTML实体形式(即&
)。例如,直接来自fine manual:
Sanitize.clean(html, Sanitize::Config::RESTRICTED) # => '<b>foo</b>'
事实上,您实际上是存储HTML片段而不是纯文本片段。你应该使用
<%= raw @thing.title %>
显示您的标题,因为它们已被Sanitize呈现为HTML安全。