4

多行换行符似乎对我不起作用:

就像是:

  intro: |
    We are happy that you are interested in
    and  
    more

和 + more 需要在换行符上,但它失败了。

  intro: |
    | We are happy that you are interested in
    | and  
    | more

或者

  intro: |
    We are happy that you are interested in \n
    and  
    more <2 spaces >
    another one

都失败了。

如何在 yaml 文本块中正确使用多行?

我在rails应用程序的HAML视图中使用它,比如

= t("mailer.beta_welcome.intro")

但是没有以这种方式打印换行符,我是否需要用 raw 或其他东西以不同的方式输出它?

4

4 回答 4

7

你的第一个例子工作正常

foo.yml

intro: |
  We are happy that you are interested in
  and  
  more

foo.rb

require 'yaml'
puts YAML.load_file('foo.yml').inspect

输出

{"intro"=>"We are happy that you are interested in\nand  \nmore\n"}
于 2013-11-13T17:03:16.517 回答
2

谷歌员工迟到的答案:

看起来您正试图将其输出为 HTML,这意味着如果您要检查页面,它确实在输出换行符。然而,HTML 在很大程度上忽略了空格,因此 HTML 渲染器将您的换行符和空格仅转换为空格。

根据simple_format文档,simple_format 将一些简单的格式化规则应用于文本输出,以使其更接近纯文本输出 - 重要的是,它将换行符转换为<br/>标签

因此,您的问题与 YAML 无关,它按预期执行。这实际上是因为 HTML 的工作方式,这也符合预期。 simple_format修复了它,因为它从带有换行符的 YAML 中获取您的字符串并将其转换为带有<br/>标签的字符串,以便换行符实际显示在 HTML 中,这是您首先想要的。

于 2014-06-16T17:51:56.913 回答
0

呃..在对不同的关键字进行了更多挖掘之后,我发现

  = simple_format(t("mailer.beta_welcome.intro"))

诀窍虽然这看起来很愚蠢,但我现在看不到解决方法

于 2013-11-13T17:55:27.937 回答
0

您可以将字符串放在单引号中,这对我有帮助:

简介:“我们很高兴您对
更多内容感兴趣”

于 2014-01-28T08:33:55.180 回答