Форматируя заполненную текстовую область, возвраты каретки, новые строки и HAML

Когда я заполняю текстовую область с текстом с помощью \r\n (возврат каретки - новая строка), текст отформатирован неправильно [ОБНОВЛЕНИЕ: \r\n - то, что сгенерировано при заполнении текстовой области, я просто вытягиваю от базы данных, что было ранее заполнено в. Также для замечания в продуктивной среде у меня, кажется, нет этой проблемы. ЗАКОНЧИТЕ ОБНОВЛЕНИЕ], Например:

%textarea  
  = "hello\r\nHow are you?"

выходит как это:

hello  
        How are you?

Я думаю, что это могло бы иметь некоторое отношение к HAML. Кто-либо может выручить меня?Примечание: если я использую \n\r, он хорошо работает, но это технически неправильно, и идентификатор должны сделать некоторый gsubs для инвертирования их для надлежащего дисплея.

11
задан Michael 18 June 2010 в 21:17
поделиться

2 ответа

Поскольку Haml автоматически делает отступы в исходном коде HTML, содержимое тегов, чувствительных к пробельным символам, таких как pre и textarea, может быть испорчено. Решением является замена новых строк внутри этих тегов на HTML-сущности новой строки , что Haml делает с помощью помощников Haml::Helpers#preserve и Haml::Helpers#find_and_preserve.

Обычно Haml делает это за вас автоматически, когда вы используете тег, которому это необходимо (это можно настроить с помощью опции :preserve). Например,

%p
  %textarea= "Foo\nBar"

будет скомпилирован в

<p>
  <textarea>
Foo&#x000A;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&#x000A;Bar</textarea></p>

Источник: этот Haml FAQ.

15
ответ дан 3 December 2019 в 05:56
поделиться

Замена

%textarea  
  = "hello\r\nHow are you?"  

на

%textarea "hello\r\nHow are you?"

все в одной строке, похоже, решила проблему. Думаю, это означает, что это проблема HAML.

0
ответ дан 3 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: