Ruby gsub没有';t插入换行符

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(" ",

我有一堆字符串,我试图用换行符替换它们之间的空格,使用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