【问题标题】:How to correctly have multi line yaml strings?如何正确拥有多行 yaml 字符串?
【发布时间】:2013-11-13 16:58:57
【问题描述】:

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

类似:

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

and + 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 或其他方式输出不同的内容吗?

【问题讨论】:

标签: syntax yaml multiline


【解决方案1】:

您的第一个示例运行良好

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"}

【讨论】:

  • 嗯,它对我不起作用:S。我尝试将电子邮件内容放入语言环境以在 haml 中使用,例如 = t("mailer.beta_welcome.intro") 它不打印换行符
【解决方案2】:

Google 员工迟到的答案:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    虽然这看起来很愚蠢,但我认为没有解决方法

    【讨论】:

    • my answer:这不是愚蠢的把戏,只是误解了 HTML 的工作原理。
    【解决方案4】:

    你可以把你的字符串放在单引号里,这对我有帮助:

    intro: '我们很高兴您对 和
    更多'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2021-01-26
      • 2020-10-16
      • 2021-07-14
      • 1970-01-01
      相关资源
      最近更新 更多