Ruby gsub没有';t插入换行符
我有一堆字符串,我试图用换行符替换它们之间的空格,使用gsub:Ruby gsub没有';t插入换行符,ruby,newline,erb,gsub,Ruby,Newline,Erb,Gsub,我有一堆字符串,我试图用换行符替换它们之间的空格,使用gsub: <%= "string string string".gsub(" ","\n") %> 我做错了什么 注意:它在IRB终端中按预期打印。我只是在使用ERB打印的浏览器中遇到此问题。这对我来说很好: puts "string string string".gsub(" ","\n") 也许你有类似的情况: x = "string string string" y = x.gsub(" ",
<%= "string string string".gsub(" ","\n") %>
我做错了什么
注意:它在IRB终端中按预期打印。我只是在使用ERB打印的浏览器中遇到此问题。这对我来说很好:
puts "string string string".gsub(" ","\n")
也许你有类似的情况:
x = "string string string"
y = x.gsub(" ","\n")
puts x
第2行中的空格被替换,但未修改x
。
结果y
已替换空格
要直接替换x
中的值,必须使用gsub代码>
根据您的编辑:
\n
不是在HTML内部解释的,您需要一个
。br标签可能不会被屏蔽,因此最终您可以在ERB内尝试以下内容:
x.gsub(" ","<br/>\n").html_safe
x.gsub(“,”
\n”).html\u安全
您使用的是什么版本的Ruby?我只是在IRB中尝试了一下,没有任何改变,效果很好。我使用的是ruby 2.0.0。这里的2.2按预期运行无法复制。您的浏览器不会像您预期的那样呈现新行,除非您将其包装在标记中或使用
标记而不是新行。因为我没有在irb中尝试过它,结果它实际上在那里工作。但它在我的浏览器中不起作用,当我试图用erb打印它时。html不会解释换行符。你能把它换成
吗?啊,我明白了。替换为
只是打印出“string
string
string”。@JoeMorano这是因为Rails中的ERB(真的是Erubis AFAIK)会自动转义文本,如果需要,您希望在末尾添加一个.HTML\u safe
调用。如果他将字符串包装在
标记中,HTML将尊重换行符
x.gsub(" ","<br/>\n").html_safe