当犯罪名称等于10时,如何创建新的ul

时间:2013-09-30 22:18:37

标签: ruby-on-rails-3

罪行计数

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

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

    <% end %>
  <% end 

%GT;

我该怎么做?

1 个答案:

答案 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 %>