Jak dodać nową linię do błędu flash?


Próbowałem sformatować błąd flasha i napotkałem kilka problemów:
errors = ["error1 msg", "error2 msg", "error3 msg"] 
flash[:error] = errors.join("\n")

Spodziewałem się, że zobaczę je w trzech oddzielnych wierszach, ale zamiast tego otrzymałem
„komunikat o błędzie 1 komunikat o błędzie 2 msg o błędzie 3 msg”
.
Co się stało z nową linią, której użyłem do dołączenia do łańcucha?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

HTML nie używa znaków nowej linii do końca linii, używa tagów
& < br/& >
. Ponadto należy użyć html_safe, aby upewnić się, że szablon nie jest pozbawiony tagów
& < br/& >
errors = ["error1 msg", "error2 msg", "error3 msg"]
flash[:error] = errors.join("").html_safe

Ponadto, jeśli masz obiekt z błędami, możesz użyć
full_messages
, aby uzyskać ładnie sformatowane błędy. Coś w tym stylu:
flash[:error] = @user.errors.full_messages.join("").html_safe
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przeglądarki zazwyczaj ignorują podziały wierszy HTML. Być może łączenie błędów ze znacznikiem końca wiersza
& < br/& >
da pożądany efekt.
flash[:error] = errors.join("")

Chociaż semantycznie może być sensowne umieszczenie błędów na nieuporządkowanej liście (
& < ul & >
) i umieszczenie każdego błędu we własnym elemencie listy (
& < li & > ). Twoje wyzwanie. 

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się