Как я могу отформатировать блок текста, содержащий разрывы строк, используя HAML? - PullRequest
2 голосов
/ 26 мая 2011

Допустим, у меня есть блок текста, который выглядит следующим образом:

First line\nSecond line\nThird line

Я хочу взять этот текст и отобразить его (используя шаблон jQuery) в HAML следующим образом:

%li ${TEXT}

К сожалению, я не нашел хорошего способа, чтобы эти разрывы строк отображали как разрывы строк. Когда они отображаются как есть, они форматируются (на реальной веб-странице) следующим образом:

First line Second line Third line

При выполнении стандартного replace(/\n/g, "<br />") в JavaScript форматированный результат (после HAML) становится:

First line<br />Second line<br />Third line

Другими словами, буквальная строка <br /> фактически отображает для пользователя .

Я уверен, что есть простое решение этой проблемы; Я просто не нахожу это быстро.

Ответы [ 4 ]

3 голосов
/ 26 октября 2011

В шаблонах jQuery вместо $ {TEXT}, где свойство TEXT содержит html, вы должны использовать {{html TEXT}}.Это предотвратит использование движком шаблонов jQuery HTML-кодировки вашего string.replace (/ \ n / g, "") перед вставкой в ​​шаблон.

1 голос
/ 07 июня 2011

Как-то так?

- lines = text.split("\n")
- unless lines.empty?
  %ul
    - lines.each do |line|
      %li= line
      - unless lines.last == line
        %br

Без сомнения, это можно улучшить.

0 голосов
/ 24 октября 2014

Улучшена форма этот ответ :

- text = "Hello \nWorld"
%p= find_and_preserve text.split("\n").join('<br>')

(Хотя вопрос, похоже, был больше о $.text против S.html, как отмечено здесь .)

0 голосов
/ 26 мая 2011

вы должны сбежать \n, удвоив побег (\\n)

replace(/\n/g, "\\n")
...