Rails simple_format 不处理某些字符串

时间:2021-01-29 08:41:50

标签: ruby-on-rails ruby

我正在尝试使用 Rails 的 simple_format() 方法,但它不起作用,因为在线示例似乎表明:它适用于双引号字符串,但不适用于单引号字符串,并且它也不起作用不适用于从我的数据库返回的模型中的文本字段。

simple_format "Hello\n\nWorld"
# Hello
# World

simple_format 'Hello\n\nWorld'
# Hello\n\nWorld

simple_format @model.hello_world
# Hello\n\nWorld

simple_format "#{@model.hello_world}"
# Hello\n\nWorld

为什么该方法对这些字符串的处理方式不同?我在示例或文档中没有看到任何说明这种行为是预期的,特别是模型字段提供的字符串。如何使用格式显示我的动态内容?

2 个答案:

答案 0 :(得分:0)

Ruby 对单引号和双引号的处理方式不同。 Documentation on Strings

在单引号字符串中,只有反斜杠和撇号被转义(支持)。这就是为什么 "#{variable}" 在 Rails 中有效而 '#{variable}' 没有的原因。如果您需要转义某些内容(变量、换行符等),请使用双引号。

答案 1 :(得分:0)

问题是来自数据库内容的数据:如果数据库内容是从单引号字符串加载的(在我的情况下埋在我的种子中),它在存储在数据库中时会被转义。我在数据库中的内容实际上是:

<块引用>

你好\n\n世界

这被发送到 simple_format 作为“转义斜线,n,转义斜线,n”,它被正确呈现:

<块引用>

你好\n\n世界

如果简单格式对您的数据库内容不起作用,请检查您的内容!