在出租系统中,我有一个名为Boardgame的模型,具有以下属性:名称,副本和情况。情境是另一个模型,具有belongs_to。
下面是我的数据库示例:
Catan, copy 1, available
War, copy 1, rented
War, copy 2, available
War, copy 3, rented
我在索引视图中的代码是(没有HTML):
<% @boardgames.each do |boardgame| %>
<%= boardgame.name %>
<%= boardgame.copy %>
<%= boardgame.situation.name %>
<% end %>
它显示:
Catan
- copy 1: available
War
- copy 1: rented
War
- copy 2: available
War
- copy 3: rented
但是我想以这种方式显示:
Catan:
- copy1: available
War:
- copy 1: rented
- copy 2: available
- copy 3: rented
现在,我看到更好的方法是将“复制”属性设置为另一个嵌套模型。但是该应用程序已经在生产中,包含所有租金记录,客户和付款等。
我该如何告诉Ruby on Rails名称是否相同,在这种情况下以嵌套形式显示属性?
答案 0 :(得分:1)
您可以在@boardgames
上使用Enumerable#group_by来使它们按照您想要的方式排列(最好不在视图本身中)。
<% @boardgames.group_by(&:name).each do |name, games| %>
<h3><%= name %></h3>
<ul>
<% games.each do |game| %>
<li>copy <%= game.copy %>: <%= game.rented %>
<% end %>
</ul>
<% end %>