Направляющие — Добавляют разрыв строки в текстовую область

Я получил приложение для направляющих, где я могу ввести несколько абзацев текста в мою модель. Проблема, я не знаю, как ввести любые разрывы строки.

Я попытался добавить "{ln} {/ln}; {&nbsp} и {br} {/br}", но который только отображает HTML как текст и никакое повреждение.

Есть ли так или иначе, я могу установить его так, управление текстовой областью будет использовать какой-либо HTML, который я помещаю в рамках образцовой записи?

Есть ли какая-либо вещь, я могу ввести так направляющие, распознает, эй поместит строку здесь?

63
задан ChrisWesAllen 29 June 2010 в 02:07
поделиться

5 ответов

Проблема не столько в редактировании значения, сколько в его последующем рендеринге. Чтобы добавить символы новой строки к вашему значению при его редактировании в текстовой области, просто нажмите клавишу возврата. Когда вы позже отредактируете это значение, пробел все равно должен остаться.

Обработка пробелов - сложная часть. В HTML пробелы обычно не важны. Средство визуализации, подобное тому, которое использует ваш браузер, будет отображать единый пробел для любой непрерывной строки пробелов. Поэтому простого сброса значения на страницу будет недостаточно:

<%= obj.description %>

Даже если ваше значение может быть «Один \ t \ n \ n Два» , на экране оно будет отображаться как ] «Один-два» .

Чтобы эти символы новой строки фактически разделяли строки при отображении, вам необходимо преобразовать их в HTML перед рендерингом:

<%= obj.description.gsub(/\n/, '<br/>') %>

Конечно, если пользователи вводят данные, которые будут включены в ваш HTML, вам следует экранировать значения для защиты от XSS .Если вам нужно поддерживать только новые строки, это должно быть так просто:

<%= h(obj.description).gsub(/\n/, '<br/>') %>

Если вы хотите разрешить более сложное форматирование, изучите Markdown и Textile ( для обоих из которых Rails предоставляет вспомогательные методы просмотра). Просто обязательно выясните, какую поддержку они предоставляют для предотвращения XSS-атак.

84
ответ дан 24 November 2019 в 16:05
поделиться

Разрывы строк в текстовых областях производятся как `\ n '. Однако проблема в том, что если вы просто выгрузите его в свое представление, это будут просто разрывы строк в исходном HTML-коде.

Вы можете попробовать использовать помощник Rails simple_format , чтобы решить некоторые из этих проблем за вас: http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html# M002285

Он автоматически преобразует разрывы строк в теги HTML. Вы можете использовать его с чем-то вроде <% = simple_format (my_text_field)%> .

107
ответ дан 24 November 2019 в 16:05
поделиться

Какую версию рельсов вы используете ?? Поскольку в рельсах 2 и 3 используется другой способ обработки.

Допустим, значение записи равно "foo
bar"

В рельсах 3, если вы хотите оценить значение html, вы можете сделать <% = raw "foo
bar"%>
, если вы это сделаете, вы получите разрыв строки, когда увидите представление.

В rails 2 этого делать не нужно, просто выполните <% = "foo
bar"%>

Кроме того, HTML все равно не оценивается в текстовой области.

1
ответ дан 24 November 2019 в 16:05
поделиться

\ n если мне не изменяет память (сегодня дела обстоят не так хорошо ... попробуйте на свой страх и риск, лол)

Редактировать: исходя из предположения, что вы говорите о текстовом поле , если это простой вывод, просто используйте

0
ответ дан 24 November 2019 в 16:05
поделиться

Если вы просто отображаете свою строку в представлении. затем попробуйте с помощью

< p >This is my text< / p >< br />
-1
ответ дан 24 November 2019 в 16:05
поделиться
Другие вопросы по тегам:

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