Когда я заполняю текстовую область с текстом с помощью \r\n (возврат каретки - новая строка), текст отформатирован неправильно [ОБНОВЛЕНИЕ: \r\n - то, что сгенерировано при заполнении текстовой области, я просто вытягиваю от базы данных, что было ранее заполнено в. Также для замечания в продуктивной среде у меня, кажется, нет этой проблемы. ЗАКОНЧИТЕ ОБНОВЛЕНИЕ], Например:
%textarea
= "hello\r\nHow are you?"
выходит как это:
hello
How are you?
Я думаю, что это могло бы иметь некоторое отношение к HAML. Кто-либо может выручить меня?Примечание: если я использую \n\r, он хорошо работает, но это технически неправильно, и идентификатор должны сделать некоторый gsubs для инвертирования их для надлежащего дисплея.
Поскольку Haml автоматически делает отступы в исходном коде HTML, содержимое тегов, чувствительных к пробельным символам, таких как pre и textarea, может быть испорчено. Решением является замена новых строк внутри этих тегов на HTML-сущности новой строки
, что Haml делает с помощью помощников Haml::Helpers#preserve
и Haml::Helpers#find_and_preserve
.
Обычно Haml делает это за вас автоматически, когда вы используете тег, которому это необходимо (это можно настроить с помощью опции :preserve
). Например,
%p
%textarea= "Foo\nBar"
будет скомпилирован в
<p>
<textarea>
Foo
Bar</textarea>
</p>
Однако, если тег генерируется помощником, Haml не сможет это определить, поэтому вам придется самостоятельно вызвать Haml::Helpers#find_and_preserve
. Вы также можете использовать ~
, что то же самое, что и =
, за исключением того, что он автоматически выполняет find_and_preserve
на входе. Например:
%p= find_and_preserve "<textarea>Foo\nBar</textarea>"
то же самое, что
%p~ "<textarea>Foo\nBar</textarea>"
и выдает
<p><textarea>Foo
Bar</textarea></p>
Источник: этот Haml FAQ.
Замена
%textarea
= "hello\r\nHow are you?"
на
%textarea "hello\r\nHow are you?"
все в одной строке, похоже, решила проблему. Думаю, это означает, что это проблема HAML.