Нежелательные символы - \r \n вставляются в БД - мне нужно удалить их на странице просмотра

Я использовал html_safe, raw и sanitize. Но мне все равно нравятся персонажи \r\n - это потому, что я использую клавишу "возврат / ввод" в Mac, чтобы перейти к следующей строке, когда я ввожу данные в мое поле описания - это textarea. Есть ли в любом случае, чтобы избежать этого на моей странице просмотра.

фактический результат -

\r\ntext text text text text text

\r\n\r\n

this place is famous for blah blah blah

ожидаемый результат-

text text text text text text

this place is famous for blah blah blah

3 ответа

Решение

Вы можете либо удалить символы, прежде чем вставлять их в базу данных, либо удалить их в представлении.

В любом случае, вы можете сделать это с gsub - ваш комментарий выше показывает, что вы использовали gsub ненадлежащим образом (не забудьте опубликовать то, что вы пробовали в своем вопросе, а также результаты!)

Пример:

@attraction.description.gsub(/\r\n/,'')

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

@attraction.description.gsub(/[\r\n]/,'')

Если вы хотите заменить на:

@attraction.description.gsub(/[\r\n]+/,'<br />').html_safe

И так далее..

С другой стороны, если вы на самом деле видите текст "\r\n" в своем выводе, то вы каким-то образом преобразовали возврат каретки и переносы строк в их "типизированные" аналоги, возможно, с помощью чего-то вроде вызова str.inspect перед сохранением. их?

Если это так, то вы хотите заменить не возврат каретки и символы новой строки, а строки "\r" и "\n", например:

@attraction.description.gsub(/\\[rn]/,'').html_safe

(Вы помещали свое регулярное выражение в кавычки для gsub, делая это сравнение строк в отличие от регулярного выражения)

Ну, я проверил это онлайн, а не в моем рубине, так что не знаю, работает ли он на 100%. Но из того, что я прочитал. Ваш код сохранен \r\n\ в виде текста, и ваш ожидаемый ответ не должен показывать их, поэтому вы должны выполнить следующую команду:

x.gsub(/[\\r\\n]/,'')

причина \ используется с r & n чтобы определить другие символы, так что сначала вам нужно сначала удалить его \\ показывает \ персонаж.

  • \\n означает строку "\n"
  • \n означает новую строку

Надеюсь, это поможет вам:

    %{ Multi-line
   string }.squish                   # => "Multi-line string"

" foo   bar    \n   \t   boo".squish # => "foo bar boo"

http://apidock.com/rails/String/squish

Другие вопросы по тегам