Форматирование населенных пунктов Textarea, возврат каретки, Newlines и Haml

StackOverflow https://stackoverflow.com/questions/3071935

Вопрос

Когда я заполняю текстура с текстом, используя r n (возврат каретки - ньюнлина), текст отформатирован неправильно [обновление: R n, что сгенерировано при заполнении текстуарии, я просто тянусь из базы данных, что было ранее заполненные. Также следует отметить, что в производственной среде я не имею эту проблему. Конечное обновление] Например:

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

выходит так:

hello  
        How are you?

Я думаю, что это может иметь что-то связанное с Хамлем. Может кто-нибудь мне помочь? ПРИМЕЧАНИЕ. Если я использую n R, это работает нормально, но это технически неверно и идентифицировать, чтобы сделать некоторые GSubs, чтобы изменить их для правильного дисплея.

Это было полезно?

Решение

Поскольку HAML автоматически отступает от исходного кода HTML, содержимое пробел-чувствительных тегов, таких как предварительно и текстура, может прикрутиться. Решение состоит в том, чтобы заменить новые линия внутри этих тегов с помощью HTML Newline объектами 
, который 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>

Источник: Это FAQ HAML.

Другие советы

Короткий ответ, если = f.text_area :foo Отображает нежелательное белое пространство в каждой новой строке:

заменять = с участием ~

Для более подробного объяснения по причинам за ним прочитайте Ответ Натали и то Dobl Docs о ~.

Продолжая от ответа @ Nex3, если вы хотите сделать несколько многострочных контент внутри текстура, попробуйте подобное:

%textarea#textarea_id{:name => 'area_name'}
  :preserve
    Line1
    Line2
    Line3
    Line4
    Line5

Изменение

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

к

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

Все на одной строке, кажется, решила проблему. Я думаю, что это означает, что это была проблема HAML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top