使用 erb 和 middleman 输出数据
Outputting data with erb and middleman
我想输出一些数据,但不确定在不更改数据文件的情况下是否可行。基本上我有一个具有以下结构的 YAML 文件
items:
- category: red
name: super fun times
note: likes fun
- category: red
name: sunshine
note: wear sunglasses
- category: blue
name: crazy face
note: avoid.
我正在做的就是这样循环
<% data.options.items.each do |q| %>
<h2><%= q.category %></h2>
<p><%= q.name %></p>
<% end %>
我希望能够在输出时按类别对项目进行分组,这样它就会像下面这样。
<h2>red</h2>
<p>super fun times</p>
<p>sunshine</p>
<h2>blue</h2>
<p>crazy face</p>
我几乎只想输出一次类别,列出该类别下的项目,然后在出现新类别时输出该类别和任何相关数据,而无需重复代码块。
您可以采用的一种方法是使用 group_to
按组对项目进行聚类,从而为每个类别生成数组集:
<% data.options.items.group_by(&:category).each do |group| %>
<h2><%= group.first %></h2>
<% group.last.each do |item| %>
<p><%= item.name %></p>
<% end %>
<% end %>
在这种情况下,运行 group_by
项目集合提供具有以下格式的对象:
{"red"=>[{"category"=>"red", "name"=>"super fun times", "note"=>"likes fun"},
{"category"=>"red", "name"=>"sunshine", "note"=>"wear sunglasses"}],
"blue"=>[{"category"=>"blue", "name"=>"crazy face", "note"=>"avoid."}]}
这样您就可以遍历对象,从而更容易在标记中将组分开。
希望对您有所帮助!
我想输出一些数据,但不确定在不更改数据文件的情况下是否可行。基本上我有一个具有以下结构的 YAML 文件
items:
- category: red
name: super fun times
note: likes fun
- category: red
name: sunshine
note: wear sunglasses
- category: blue
name: crazy face
note: avoid.
我正在做的就是这样循环
<% data.options.items.each do |q| %>
<h2><%= q.category %></h2>
<p><%= q.name %></p>
<% end %>
我希望能够在输出时按类别对项目进行分组,这样它就会像下面这样。
<h2>red</h2>
<p>super fun times</p>
<p>sunshine</p>
<h2>blue</h2>
<p>crazy face</p>
我几乎只想输出一次类别,列出该类别下的项目,然后在出现新类别时输出该类别和任何相关数据,而无需重复代码块。
您可以采用的一种方法是使用 group_to
按组对项目进行聚类,从而为每个类别生成数组集:
<% data.options.items.group_by(&:category).each do |group| %>
<h2><%= group.first %></h2>
<% group.last.each do |item| %>
<p><%= item.name %></p>
<% end %>
<% end %>
在这种情况下,运行 group_by
项目集合提供具有以下格式的对象:
{"red"=>[{"category"=>"red", "name"=>"super fun times", "note"=>"likes fun"},
{"category"=>"red", "name"=>"sunshine", "note"=>"wear sunglasses"}],
"blue"=>[{"category"=>"blue", "name"=>"crazy face", "note"=>"avoid."}]}
这样您就可以遍历对象,从而更容易在标记中将组分开。
希望对您有所帮助!