【问题标题】:Select specific items within yaml sequence in haml在haml中选择yaml序列中的特定项目
【发布时间】:2016-04-01 06:13:17
【问题描述】:

我正在使用 Middleman 构建一个网站,并尝试通过部分 in haml 从 yaml 序列中的特定键值对访问数据,如下所示:

yaml

# people.yml

- jack:
  fruit: Apples
  veg: Cabbage
- jill:
  fruit: Oranges
  veg: Spinach

哈姆尔

-# index.html.haml

= partial "some_partial",
   locals => { :fruit => data.people.jack.fruit }

由于某种原因,- jack 返回一个“未定义的方法”错误。如果我删除破折号,因此删除序列,我显然可以访问fruit。我认为序列意味着- jack 的嵌套比jack 更深。如果有,嵌套在什么里面?

我有这个设置的原因是因为我在其他页面的循环中调用整个序列。但在某些地方,我只想从选定的项目中获取 sn-ps。

简短的问题:您应该如何在 haml 中访问 yaml 序列中的特定键值对?

【问题讨论】:

  • 并不是jack嵌套的更深,只是它是按顺序访问的,例如people[0].
  • @SteveTurczyn 我明白了,谢谢。我会在可以的时候进行测试,但这是否意味着每个项目只能根据它的索引位置来访问,即。 0, 1, 2 ...?

标签: ruby yaml haml middleman


【解决方案1】:

您可能希望按如下方式构建 YAML...

# people.yml

- jack:
    fruit: Apples
    veg: Cabbage
- jill:
    fruit: Oranges
    veg: Spinach

嵌套水果和蔬菜给你people.jack.fruit的关系

【讨论】:

  • 感谢您的提示。我认为这已经是这种情况了,因为循环匹配了正确的数据
  • 原始结构等价于[{'jack' => nil, 'fruit' => 'Apples', 'veg' => 'Cabbage'}, {'jill' => nil, 'fruit' => 'Oranges', 'veg' => 'Spinach'}],即两个哈希的数组。遍历数组可以让您访问所有 fruit 数据和所有 veg 数据,但不会明确地将两者嵌套在一个人名下。
  • data.people.jack.fruitfruit 正确嵌套在- jack: 中,如上所述,仍然返回“未定义的方法”。但是,data.people[0].jack.fruit 工作正常。我假设- jack: 与破折号一起充当其嵌套项的键,因此我认为我可以选择jack。但是,- 似乎只是表示数组people 中包含jack: 的序列项,因此与jack 是分开的。因此,您似乎必须选择数组项,例如。 [0],然后,如果有嵌套在[0] 中的项目,请选择适当的键,例如。 jack。这是答案吗?
  • 是的,所有序列项都是通过偏移量选择的。
猜你喜欢
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2019-05-16
  • 2017-02-16
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多