罪行计数
如果犯罪列表等于11,则创建一个新列表,这是对不起的更新版本....
<ul>
<% category.crimeheaders.each do |crimeheader| %>
<% crimeheader.crimes.each do |crime| %>
<li>
<%= crime.id %>
</li>
<li>
<%= crime.name %>
</li>
<% end %>
<% end
%GT;
我该怎么做?
答案 0 :(得分:1)
好的,首先你需要获得所有犯罪的清单,无论是否由犯罪分子构建。
这样做的一种方法是通过crimeheaders
关系在类别级别添加与犯罪的关系:
class Category
has_many :crimeheaders
has_many :crimes, through: :crimeheaders # this is what you add
...
end
一旦你拥有了这个,你就可以循环播放一个类别中的所有犯罪,批量为10。
<% category.crimes.each_slice(10) do | batch | %>
<ul>
<% batch.each do |crime| %>
<li><%= crime.name %></li>
<% end %>
</ul>
<% end %>
这将获得该类别的所有罪行,然后一次给你10个切片显示在列表中。
现在,如果你想变得聪明,你实际上可以分批从10中检索数据库。 可能不值得,但这是一个想法:
<% Crime.where(category_id: 123).find_in_batches( batch_size: 10 ) do | batch | %>
<ul>
<% batch.each do |crime| %>
<li><%= crime.name %></li>
<% end %>
</ul>
<% end %>