我在表单中有一个text_area字段,允许通过非常简单的WYSIWYG(粗体/下划线/项目符号点)进行一些文本格式化。这旨在在用户的描述配置文件中具有一致的格式。
<%= l.text_area :access, value: "#{t('.access_placeholder_html')}" %>
尽管如此,有些用户通常会直接从他们的网站上复制/粘贴text_area。他们的特定格式&#34;超文本链接&#34;,字体大小等在我的网站上反映出来后,这有点脏。
我该如何解决这个问题。理想情况下,我希望在保存表单时,它可以删除所有不允许的HTML代码,而不是不允许复制/粘贴。这可能吗?想知道是否应该使用Sanitize,但如果是这样的话怎么样? (对不起新代码,我想你会明白的)。
答案 0 :(得分:0)
您没有说出哪个版本的Rails,但您可以使用#sanitize
模块中的ActionView::Helpers::SanitizeHelper
来删除所有HTML格式。它使用scrubber从文本中擦除HTML。默认的scrubber允许选择属性列表。如果您需要更多地控制输出内容,您甚至可以构建自己的自定义滑块来修改字符串。该模块还包含#strip_tags
和#strip_links
,它们是非常简单的清理程序,可以删除所有HTML标记和所有HTML链接标记(保留链接文本)。
请注意,如果用户的输入不是有效的HTML,您可以查看格式错误的文字。
文档中的快速示例:
// remove all HTML tags except <strong> <em> <a> and the
// <href> attributes from @text
nomarkup_text = sanitize @text, tags: %w(strong em a), attributes: %w(href)
// remove all HTML markup
strip_tags("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
返回字符串Bold no more! See more here...
// remove just the link markup
strip_links('Please e-mail me at <a href="mailto:me@email.com">me@email.com</a>.')
返回字符串Please e-mail me at me@email.com.