如何打印一些特征及其特征类型(类别)?

时间:2018-08-03 12:37:14

标签: ruby-on-rails ruby ruby-on-rails-5

我有一些要在车辆展示中打印的车辆功能。问题在于功能具有类别(或类型),我也想打印它们。但首先,让我解释一下我的项目:

我有3种型号:

  • 车辆:车辆具有并且属于许多功能。
  • 功能类型:功能类型具有许多功能。
  • 功能:功能属于Feature_types,具有很多功能,并属于Vehicles。

因此,当我创建/编辑车辆时,得到了它(请参见下图)以选择该车辆的功能。当我提交车辆时,这些功能会转到保存feature_ids的数组。

#vehicle form page
<% FeatureType.all.order("description").each do |ft| %>

  <span><%= ft.description %></span>

  <%= f.collection_check_boxes :feature_ids, ft.features, :id, :description do |b|%>
     <%= b.label{ b.check_box + b.text } %>
  <% end %>

<% end %>

enter image description here

在我的车辆展示页面上,我想显示要素类型,然后显示所选的要素。如果一个feature_type没有选择任何特征,则feature_Type将不会显示。但是我现在真的不怎么做。我只能打印所有选定的精选功能:

#vehicle show page
<% @vehicle.features.each do |feature| %>
   <span><i class="fa fa-check"></i><%= feature.description %></span>
<% end %>

输出:

enter image description here

所需的输出:

enter image description here

我该如何实现?

很抱歉,帖子过长。谢谢!

P.S:如果您能为此帖子提供标题,我将不胜感激!我真的不知道如何给这个xD命名

1 个答案:

答案 0 :(得分:3)

您要尝试做的关键是group_by

<% @vehicle.features.group_by(&:feature_type).each do |feature_type, features| %>
  <%= feature_type %>
  <% features.each do |feature| %>
    ...
  <% end %>
<% end %>