【问题标题】:Rails not parsing a valid YAML fileRails 未解析有效的 YAML 文件
【发布时间】:2012-07-29 07:39:43
【问题描述】:

我正在尝试使用我的 Rails (3.2.7) 应用程序解析以下 YAML

---
main-menu:
  - mitem: Test1
    controller: user
    action: test
  - mitem: Test
    controller: user
    action: test2
    - mitem: Test3
      controller: user
      action: test

不幸的是,当我加载我的文件时直接

    require "yaml"
    @menu = YAML.load_file(file)

我收到一个错误

Psych::SyntaxError in User#test

Showing /srv/http/fiss/app/views/layouts/application.html.haml where line #12 raised:

(/srv/http/fiss/app/assets/yaml/menu.yaml): did not find expected key while parsing a     block mapping at line 6 column 5

我是 Rails(和 YAML)的新手,但是我已经使用 YAML Lint 检查了代码,显然 YAML 代码是有效的。这是什么原因造成的?

【问题讨论】:

    标签: ruby-on-rails web-applications yaml


    【解决方案1】:

    您有缩进问题。你是说

    main-menu:
      - mitem: Test1
        controller: user
        action: test
      - mitem: Test
        controller: user
        action: test2
      - mitem: Test3
        controller: user
        action: test
    

    【讨论】:

    • 对不起,我的问题没有明确。这个缩进是有目的的——我试图让mitem 拥有sub-mitems(等等,递归)
    • 缩进是有目的的?空格有意义吗?
    【解决方案2】:

    试试

    main-menu:
      - mitem: Test1
        controller: user
        action: test
      - mitem: Test
        controller: user
        action: test2
        children:
          - mitem: Test3
            controller: user
            action: test
    

    【讨论】:

    • 谢谢你解决了这个问题。我也用 python 测试过它,同样 Ruby 我的原始版本也不起作用。这仅仅是因为 YAML 语法吗?
    【解决方案3】:

    最好的办法是通过http://yamllint.com/ 运行您的 yaml 文件

    【讨论】:

    • 我赞同上述观点。在线 YAML 解析器在我得到“解析块时未找到预期的密钥...”错误的地方发现了一个错误。
    【解决方案4】:

    检查您的 YAML,您必须在键值之前有任何额外或更少的空格,这对我有帮助。

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多