как создать символ изменения строки в представлении rails (файл .html.erb) - PullRequest
0 голосов
/ 16 марта 2011

Я пытался:

<%= "foo \n bar" %> 

, получая только "Foo bar".Rails, кажется, игнорирует escape-символ.Как я могу произвести символ строки изменения, так как я получаю информацию из базы данных, а "\ n" является частью записей для выражения изменяющейся строки.(Нужно ли писать текстовый парсер по группам в контроллерах? Я думаю, что этот способ слишком громоздок ...)

Ответы [ 3 ]

6 голосов
/ 16 марта 2011

Попробуйте simple_format

<%= simple_format "foo \n bar" %>
0 голосов
/ 16 марта 2011

Я проверил код функции simple_html .На самом деле это вызов gsub следующим образом:

# File actionpack/lib/action_view/helpers/text_helper.rb, line 253
      def simple_format(text, html_options={}, options={})
        text = ''.html_safe if text.nil?
        start_tag = tag('p', html_options, true)
        text = sanitize(text) unless options[:sanitize] == false
        text.gsub!(/\r\n?/, "\n")                    # \r\n and \r -> \n
        text.gsub!(/\n\n+/, "</p>\n\n#{start_tag}")  # 2+ newline  -> paragraph
        text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline   -> br
        text.insert 0, start_tag
        text.html_safe.safe_concat("</p>")
      end

Причина, по которой ранее он не работал, заключается в том, что мне нужно добавить вызов html_safeЯ помню, я встречал это раньше.Это только для рельсов 3.Поэтому nkassis не ошибается.

На самом деле я могу написать код следующим образом:

<%= "foo \n bar".gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />').html_safe %>
0 голосов
/ 16 марта 2011

Вы можете просто заменить их на разрывную строку html, так как <% =%> просто поместит вывод как html.Итак,

<%= "foo \n bar".gsub("\n","<br />") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...