2012-01-06 43 views
9

tôi đã cố gắng để định dạng lỗi flash và chạy vào một số vấn đề:Làm cách nào để thêm dòng mới vào lỗi flash?

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

tôi mong đợi để nhìn thấy chúng hiển thị trong ba dòng riêng biệt, tuy nhiên, tôi đã "error1 msg error2 msg error3 msg" để thay thế.

Điều gì đã xảy ra với dòng mới mà tôi đã sử dụng để tham gia chuỗi?

Trả lời

4

Trình duyệt thường bỏ qua ngắt dòng trong HTML. Có lẽ việc tham gia các lỗi với thẻ ngắt dòng <br/> sẽ có hiệu ứng mong muốn.

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

Mặc dù nó có thể làm cho ý nghĩa hơn ngữ nghĩa để đặt sai sót trong một danh sách chưa (<ul>) và đưa từng lỗi trong mục danh sách riêng của mình (<li>). Cuộc gọi của bạn.

+4

Nó không hoạt động. Bây giờ nó hiển thị "error1 msg
error2 msg
error3 msg" – user612308

+2

Nó hoạt động, nhưng Rails có lẽ là khử trùng '
' đang cố gắng hữu ích. –

+7

'errors.join ("
") .html_safe' sẽ hoạt động. – Dogbert

13

HTML không sử dụng dòng mới cho ngắt dòng, nó sử dụng các thẻ <br/>. Ngoài ra, bạn phải sử dụng html_safe để đảm bảo mẫu không thoát khỏi <br/> thẻ

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

Ngoài ra, nếu bạn có một đối tượng có lỗi, bạn có thể sử dụng để có được full_messages lỗi định dạng đẹp. Một cái gì đó như thế này:

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

Bạn nên sử dụng câu trả lời khác làm câu trả lời của riêng bạn. – bronislav

Các vấn đề liên quan