如何为Flash错误添加换行符?

时间:2012-01-06 03:08:49

标签: ruby-on-rails ruby

我尝试格式化Flash错误并遇到了一些问题:

errors = ["error1 msg", "error2 msg", "error3 msg"]   
flash[:error] = errors.join("\n") 

我希望看到它们以三个单独的行显示,但是,我得到了"error1 msg error2 msg error3 msg"

我用来加入字符串的换行符发生了什么变化?

2 个答案:

答案 0 :(得分:17)

HTML不使用换行符换行符,它使用<br/>标记。此外,您必须使用html_safe来确保模板不会转义<br/>标记

errors = ["error1 msg", "error2 msg", "error3 msg"]
flash[:error] = errors.join("<br/>").html_safe 

此外,如果您有一个有错误的对象,您可以使用full_messages来获得格式错误的错误。像这样:

flash[:error] = @user.errors.full_messages.join("<br/>").html_safe

答案 1 :(得分:6)

浏览器通常会忽略HTML中的换行符。也许使用换行符<br/>标记加入错误会产生预期效果。

flash[:error] = errors.join("<br/>") 

虽然在语义上将错误放在无序列表(<ul>)中并将每个错误放在其自己的列表项(<li>)中可能更有意义。你的电话。