【问题标题】:Rails - close html tags when you enter html in a formRails - 在表单中输入 html 时关闭 html 标签
【发布时间】:2012-03-08 08:25:31
【问题描述】:
如果用户忘记关闭 html 标签,有什么方法可以关闭?例如。当用户输入是:
<b>small</b><i>test
Rails 有没有办法自动添加结束 </i> 标记,这样下面的所有 html 都不会是斜体?
我使用.html_safe 将所有内容解释为html,但我也想终止<i>。
【问题讨论】:
标签:
html
ruby-on-rails
ruby
【解决方案1】:
Rails 没有任何内置功能来执行此操作,但是您有两种选择:
- Nokogiri - 几乎可以在所有平台上轻松安装 (
gem install nokogiri)
-
Tidy - 第二篇文章详细介绍了在 linux 和 windows 中使用它
使用 nokogori 你可以简单地做到:
html = "<b>small</b><i>test"
clean = Nokogiri::HTML::DocumentFragment.parse(html).to_html
# clean = "<b>small</b><i>test</i>"
【解决方案2】:
Rails 不能对你这样做。
您可以使用一些模板系统,例如 Haml 或 Slim,以免忘记这一点。
您也可以通过自己的编辑器来完成。
【解决方案3】:
一个不错的方法是将输入提供给 dom 解析器,然后让该解析器输出正确的 HTML。
请注意,这不是万无一失的,如果用户犯了太多错误,解析器将不知道该怎么做。
我建议Nokogiri