2012-01-06 16 views
9

Próbowałem sformatować błąd flash i pobiegł w niektórych kwestiach:Jak dodać znak nowej linii do błędu lampy błyskowej?

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

Spodziewałem się zobaczyć je wyświetlane w trzech oddzielnych linii, jednak mam "error1 msg error2 msg error3 msg" zamiast.

Co stało się z linią, której użyłem do przyłączenia łańcucha?

Odpowiedz

4

Przeglądarki zazwyczaj ignorują podziały wierszy w HTML. Być może dołączenie do błędu z tagiem break-line <br/> przyniesie oczekiwany efekt.

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

Choć może to więcej sensu semantycznie umieścić błędy w liście nieuporządkowanej (<ul>) i umieścić każdy błąd w swoim elementu listy (<li>). Twoja decyzja.

+4

To nie działa. Teraz wyświetla komunikat "error1 msg
error2 msg
error3 msg" – user612308

+2

To działa, ale Rails prawdopodobnie oczyszcza '
' próbując być pomocnym. –

+7

'errors.join ("
") .html_safe' powinno działać. – Dogbert

13

HTML nie używa znaków nowej linii do łamania wierszy, używa tagów <br/>. Ponadto, należy użyć html_safe aby upewnić się, że szablon nie uciec <br/> tagów

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

także, jeśli masz obiekt z błędów, można użyć full_messages aby ładnie sformatowane błędów. Coś takiego:

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

To zły pomysł, aby użyć innej odpowiedzi jako własnej. – bronislav

Powiązane problemy