ruby-on-rails - 换行符搞砸了 <pre> 标签(Ruby on Rails)

标签 ruby-on-rails ruby regex newline

我正在开发一个博客,但换行符 (\n) 出现了一些非常烦人的事情。一切正常,除非我发了一篇包含前置标签的帖子,我的换行符搞砸了缩进。

如果我有这样的代码

<pre>
  <code>
    some code some code
    more code more code
  </code>
</pre>

由于某些原因,与帖子一起保存在 db 字段中的换行符导致 pre 标记内的任何内容缩进一两个制表符。

我不知道它为什么这样做,但如果我做类似的事情

string.gsub!(/\n/, "<br />")

缩进被删除,所以我知道它与\n 有关。但是后来我的问题是换行符太多了,然后格式就偏离了。

然后我尝试使用如下所示的方法捕获 pre 标签内的所有内容

def remove_newlines(string)
   regexp = /<pre>\s?(.*?)\s?<\/pre>/
   code = regexp.match(string)
   code[1].gsub!(/\n/, "<br />")
end

但我无法让它正常工作。

任何人都知道我怎样才能摆脱这个奇怪的缩进问题,或者对此有任何指示?

谢谢!

最佳答案

听起来您的模板引擎正在自动缩进 <pre> 的内容标签。浏览器渲染 <pre> 中的空白按原样标记(根据规范,它们应该如此)。这意味着 <pre> 中每行开头的空格模板引擎为了使 HTML 源代码更具可读性而添加的内容也在实际页面中呈现,这与 HTML 源代码中大多数其他地方的空白不同。

因此,解决方案取决于您的模板语言。

如果您使用的是 HAML:

HAML FAQ: How do I stop Haml from indenting the contents of my pre and textarea tags?

希望这对您有所帮助。

关于ruby-on-rails - 换行符搞砸了 <pre> 标签(Ruby on Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533989/

相关文章:

python - 我如何使用 Ruby 创建一个 "EXE",就像 DropBox 使用 Python 一样?

ruby - 在 OS X 上安装 SciRuby 失败

替换字符串/文本中出现的 'from nth to the last' 个单词

regex - 在 PowerShell 中使用加号重命名文件

ruby-on-rails - ActiveStorage::PurgeJob:Class (NoMethodError) 的未定义方法 `discard_on'

ruby-on-rails - 如何在我的 Rails 应用程序 View 中指定销毁路径助手?

ruby-on-rails - 解析包含 GMT 偏移时间的时区名称字符串

java - 正则表达式不匹配

ruby-on-rails - rspec 测试中的 Rails 应用程序端口号

ruby-on-rails - 大整数和自定义验证