我尝试格式化Flash错误并遇到了一些问题:
errors = ["error1 msg", "error2 msg", "error3 msg"]
flash[:error] = errors.join("\n")
我希望看到它们以三个单独的行显示,但是,我得到了"error1 msg error2 msg error3 msg"
。
我用来加入字符串的换行符发生了什么变化?
答案 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>
)中可能更有意义。你的电话。