Нежелательные символы - \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"