我正在尝试使用 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
为什么该方法对这些字符串的处理方式不同?我在示例或文档中没有看到任何说明这种行为是预期的,特别是模型字段提供的字符串。如何使用格式显示我的动态内容?
答案 0 :(得分:0)
Ruby 对单引号和双引号的处理方式不同。 Documentation on Strings
在单引号字符串中,只有反斜杠和撇号被转义(支持)。这就是为什么 "#{variable}"
在 Rails 中有效而 '#{variable}'
没有的原因。如果您需要转义某些内容(变量、换行符等),请使用双引号。
答案 1 :(得分:0)
问题是来自数据库内容的数据:如果数据库内容是从单引号字符串加载的(在我的情况下埋在我的种子中),它在存储在数据库中时会被转义。我在数据库中的内容实际上是:
<块引用>你好\n\n世界
这被发送到 simple_format 作为“转义斜线,n,转义斜线,n”,它被正确呈现:
<块引用>你好\n\n世界
如果简单格式对您的数据库内容不起作用,请检查您的内容!