当前位置:  开发笔记 > 后端 > 正文

如何使用haml循环遍历yaml序列中的选定项目

如何解决《如何使用haml循环遍历yaml序列中的选定项目》经验,为你挑选了1个好方法。

我有一个包含推荐的yaml序列,我想在某些地方完整地循环,但只有部分地在其他地方.简而言之,如何在haml中以yaml序列选择和循环特定项目?

以下示例被剥离

我的yaml数据

# testimonials.yml

-
  name: 'Jill'
  quote: 'An unbelievable experience!'
  photo: 'jill.jpg'
-
  name: 'Jack'
  quote: 'I unreservedly recommend this programme'
  photo: 'jack.jpg'
-
  # ... etc 

一个基本的工作haml循环

-# about.html.haml

- data.testimonials.each do |testimonial|
  %div
    %img{ :src => testimonial.photo }
    %p= testimonial.name
    %p= testimonial.quote

我想要实现的目标

然而,在另一部分中,我只想循环遍历序列中的特定推荐,例如.[0, 4, 7].在我的天真中,我认为这类似于在循环之外选择特定的序列项,例如.%p= data.testimonials[0].name,像这样:

- data.testimonials[0, 4, 7].each do |testimonial|
  %div
    %img{ :src => testimonial.photo }
    %p= testimonial.name
    %p= testimonial.quote

然而...这将返回一个"错误数参数的"错误,因为它出现这种方法只接受序列/阵列,例如内的单个范围testimonials[4, 7](或[4..7],2..2等).

有没有办法将多个范围传递到此循环中,例如.[0..2 && 4..7](这不起作用,但你得到我的漂移)?或者,这甚至是推荐的实现这一结果的方法吗?也就是说,是否有一种标准且更有效的方法来选择和循环遍历yaml序列中的特定项目(或范围)?

注意

我觉得这篇文章中的select方法(粘贴在下面)包含答案......但我可能错了,我不知道如何使用它...

select
(别名以避免:find_all)
当您需要过滤(即"选择")多个值时非常有用.
[1, 2, 3, 4].select { |e| e % 2 == 0 } # returns [2, 4]

为了测试,我试图将上面的内容翻译成- data.testimonials.select do |testimonial| testimonial == 1,它只返回整个序列,以及- data.testimonial.select {|testimonial| testimonial == 1}返回语法错误......



1> Amit Sharma..:

您也可以使用此Array#values_at

例如.

- data.testimonials.values_at(0, 4, 7).each do |testimonial|
  %div
    %img{ :src => "#{testimonial.photo}" }
    %p= testimonial.name
    %p= testimonial.quote

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有