2012-01-06 12 views
9

Ho provato a formattare l'errore flash e corse in alcuni problemi:Come si aggiunge una nuova riga all'errore flash?

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

mi aspettavo di vederli visualizzati in tre linee separate, però, ho avuto "error1 msg error2 msg error3 msg" invece.

Cosa è successo al newline che ho usato per unire la stringa?

risposta

4

I browser di solito ignorano le interruzioni di riga in HTML. Forse unire gli errori con un tag di interruzione di riga <br/> avrà l'effetto desiderato.

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

Anche se può avere più senso semanticamente mettere gli errori in una lista non ordinata (<ul>) e mettere ogni errore nella propria voce dell'elenco (<li>). La tua chiamata.

+4

Non funziona. Ora visualizza "error1 msg
error2 msg
error3 msg" – user612308

+2

Funziona, ma Rails sta probabilmente disinfettando il '
' cercando di essere utile. –

+7

'errors.join ("
") .html_safe' dovrebbe funzionare. – Dogbert

13

HTML non utilizza il ritorno a capo per interruzioni di riga, utilizza i tag <br/>. Inoltre, è necessario utilizzare html_safe per assicurarsi che il modello non sfugge ai <br/> tag

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

Inoltre, se si dispone di un oggetto con errori, è possibile utilizzare full_messages per ottenere gli errori ben formattati. Qualcosa del genere:

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

È una cattiva idea usare un'altra risposta come propria. – bronislav

Problemi correlati