如何做Rails的simple_format的“逆”?

时间:2015-04-12 16:55:27

标签: html ruby-on-rails ruby escaping string-conversion

Rails中的simple_format帮助程序将采用文本输入并将换行符转换为pbr标记,这与我尝试完成的完全相反。

我如何获取一段看起来像的HTML:

<p>Lorem</p>
<p>Ipsum.
  <br /> 
  Lorem ipsum.
  <br /> 
  Lorem ipsum. 
</p>
<p>
  Lorem ipsum.
</p>

并将其转换为类似的内容:

Lorem\n\nIpsum.\nLorem ipsum.\nLorem ipsum.\n\nLorem ipsum.

2 个答案:

答案 0 :(得分:1)

new_html = html
             .gsub("\n", '')             # remove existing new lines
             .gsub('</p>', "</p>\n")     # add a new line per para tag
             .gsub('<br />', "<br />\n") # add a new line per break tag
ActionController::Base.helpers
  .strip_tags(new_html)                  # remove all html tags

答案 1 :(得分:0)

补充上一个答案,您可能希望添加.gsub('<br/>', "<br/>\n"),以防断开标记为.gsub('<div/>', "<div/>\n")。只需确保替换所有必须破坏文本的标签。