Ben*_*Ben 1 ruby regex newline ruby-on-rails
我正在开发一个博客和一些非常烦人的东西正在发生换行符(\n).一切正常,除非我发布一个包含预标签的帖子,我的换行符会搞砸缩进.
所以如果我的代码看起来像这样
<pre>
<code>
some code some code
more code more code
</code>
</pre>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,使用帖子保存在db字段中的换行符会导致pre标签内的任何内容被一两个选项卡缩进.
我不知道为什么会这样做,但如果我做了类似的事情
string.gsub!(/\n/, "<br />")
Run Code Online (Sandbox Code Playgroud)
缩进被删除,所以我知道它与\n有关.但后来我的问题是,有太多的换行符,然后格式是关闭的.
那么我尝试用一个看起来像这样的方法捕获pre标签内的所有内容
def remove_newlines(string)
regexp = /<pre>\s?(.*?)\s?<\/pre>/
code = regexp.match(string)
code[1].gsub!(/\n/, "<br />")
end
Run Code Online (Sandbox Code Playgroud)
但我无法让它正常工作.
任何人都知道如何摆脱这个奇怪的缩进问题,或任何指针?
谢谢!
听起来你的模板引擎会自动缩进<pre>标签的内容.浏览器将<pre>标签内的空白呈现为原样(根据规格,它们应该如此).这意味着<pre>在模板引擎添加的每行开头的空白以便使HTML源更具可读性,这也是在实际页面中呈现的,与HTML源中的大多数其他位置不同.
因此,解决方案取决于您的模板语言.
如果您使用的是HAML:
HAML FAQ:如何阻止Haml缩进我的pre和textarea标签的内容?
希望这可以帮助.