~ работает также как и =, когда на входе работает метод Haml::Helpers#find_and_preserve. Например:

~ "Foo\n<pre>Bar\nBaz</pre>"

тоже самое, что и:

= find_and_preserve("Foo\n<pre>Bar\nBaz</pre>")

и компилируется в

Foo
<pre>Bar&#x000A;Baz</pre>

Еще немного про сохранение пробелов.

На сайте функционирует система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter. Также отправить оповещение об ошибке можно, нажав на эту ссылку.