1

我使用了 html_safe、raw 和 sanitize。但我仍然喜欢这样的字符\r \n——这是因为当我在我的描述字段中输入数据时,我在 Mac 中使用“return/enter”键转到下一行——这是 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
4

3 回答 3

0

好吧,我已经在线测试过了,而不是在我的 ruby​​ 中,所以不知道它是否有效 %100。但从我所读到的。您的代码保存\r\n\为文本,并且您的预期答案不应显示它们,因此您必须运行以下命令:

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

Cause\r&一起使用n来定义其他字符,因此您首先需要丢弃它首先\\显示该\字符。

  • \\n表示“\n”字符串
  • \n表示新行
于 2016-07-11T08:37:18.260 回答
0

希望这可以帮助你:

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

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

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

于 2016-07-11T08:06:52.157 回答
0

您的选择是在将字符插入数据库之前剥离字符,或者在视图中剥离它们。

无论哪种方式,您都可以使用 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 的引号中,使其成为字符串比较而不是正则表达式)

于 2016-07-11T07:45:32.580 回答