0

计数犯罪

如果犯罪列表等于 11 上的 10,则创建一个新列表,这是它的更新版本对不起....

 <ul>  
  <% category.crimeheaders.each do |crimeheader| %> 
    <% crimeheader.crimes.each do |crime| %> 
      <li>
        <%= crime.id  %>
      </li>
      <li>
        <%= crime.name %>
      </li>

    <% end %>
  <% end 

%>

我该怎么做???

4

1 回答 1

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 %>
于 2013-09-30T22:35:25.500 回答