Я получил приложение для направляющих, где я могу ввести несколько абзацев текста в мою модель. Проблема, я не знаю, как ввести любые разрывы строки.
Я попытался добавить "{ln} {/ln}; { } и {br} {/br}", но который только отображает HTML как текст и никакое повреждение.
Есть ли так или иначе, я могу установить его так, управление текстовой областью будет использовать какой-либо HTML, который я помещаю в рамках образцовой записи?
Есть ли какая-либо вещь, я могу ввести так направляющие, распознает, эй поместит строку здесь?
Проблема не столько в редактировании значения, сколько в его последующем рендеринге. Чтобы добавить символы новой строки к вашему значению при его редактировании в текстовой области, просто нажмите клавишу возврата. Когда вы позже отредактируете это значение, пробел все равно должен остаться.
Обработка пробелов - сложная часть. В HTML пробелы обычно не важны. Средство визуализации, подобное тому, которое использует ваш браузер, будет отображать единый пробел для любой непрерывной строки пробелов. Поэтому простого сброса значения на страницу будет недостаточно:
<%= obj.description %>
Даже если ваше значение может быть «Один \ t \ n \ n Два»
, на экране оно будет отображаться как ] «Один-два»
.
Чтобы эти символы новой строки фактически разделяли строки при отображении, вам необходимо преобразовать их в HTML перед рендерингом:
<%= obj.description.gsub(/\n/, '<br/>') %>
Конечно, если пользователи вводят данные, которые будут включены в ваш HTML, вам следует экранировать значения для защиты от XSS .Если вам нужно поддерживать только новые строки, это должно быть так просто:
<%= h(obj.description).gsub(/\n/, '<br/>') %>
Если вы хотите разрешить более сложное форматирование, изучите Markdown и Textile ( для обоих из которых Rails предоставляет вспомогательные методы просмотра). Просто обязательно выясните, какую поддержку они предоставляют для предотвращения XSS-атак.
Разрывы строк в текстовых областях производятся как `\ n '. Однако проблема в том, что если вы просто выгрузите его в свое представление, это будут просто разрывы строк в исходном HTML-коде.
Вы можете попробовать использовать помощник Rails simple_format
, чтобы решить некоторые из этих проблем за вас: http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html# M002285
Он автоматически преобразует разрывы строк в теги HTML. Вы можете использовать его с чем-то вроде <% = simple_format (my_text_field)%>
.
Какую версию рельсов вы используете ?? Поскольку в рельсах 2 и 3 используется другой способ обработки.
Допустим, значение записи равно "foo
bar"
В рельсах 3, если вы хотите оценить значение html, вы можете сделать <% = raw "foo
, если вы это сделаете, вы получите разрыв строки, когда увидите представление.
bar"%>
В rails 2 этого делать не нужно, просто выполните <% = "foo
bar"%>
Кроме того, HTML все равно не оценивается в текстовой области.
\ n
если мне не изменяет память (сегодня дела обстоят не так хорошо ... попробуйте на свой страх и риск, лол)
Редактировать: исходя из предположения, что вы говорите о текстовом поле
, если это простой вывод, просто используйте
Если вы просто отображаете свою строку в представлении. затем попробуйте с помощью
< p >This is my text< / p >< br />