循环遍历group_by上的日期

时间:2017-07-03 12:15:40

标签: ruby-on-rails group-by

我正在尝试显示一个表(来自我的数据库的数据),它计算该日期数据的出现次数。

我希望按日期对数据进行分组,然后循环遍历每个日期并运行查询。问题在于我刚刚得到的服务器日志是我的查询的无限循环。

CACHE (0.0ms)  SELECT COUNT(*) FROM `data` WHERE (NOT (name = ''))
CACHE (0.0ms)  SELECT COUNT(*) FROM `data` WHERE (NOT (age = ''))
CACHE (0.0ms)  SELECT COUNT(*) FROM `data` WHERE (NOT (address = ''))

控制器:

def sum
    date = Data.all
    @sub_date = date.group_by(&:Submit_Date).map
end

型号:

  def name_null
    Data.where.not("name = ?", '').count
  end

  def age_null
    Data.where.not("age = ?",'').count
  end

  def address_null
    Data.where.not("address = ?", '').count
  end

查看:

<tr>
        <% @sub_date.each do |l, date|%>
            <td><%=l%></td>
              <% date.each do |ds| %>
                  <td><%= ds.name_null%></td>
                  <td><%= ds.age_null%></td>
                  <td><%= ds.address_null%></td>
              <% end %>
          <% end %>
</tr>

请告诉我哪里弄错了,目前正在研究rails。 :)

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

控制器

def sum
    date = Data.all
    @sub_date = date.group_by(&:submit_date)
end

模型

  def name_null
    Data.where.not("name = ?", nil).count
  end

  def age_null
    Data.where.not("age = ?",nil).count
  end

  def address_null
    Data.where.not("address = ?", nil).count
  end

视图

<% @sub_date.each do |l, date|%>
    <tr>
        <td><%=l%></td>
          <% date.each do |ds| %>
              <td><%= ds.name_null%></td>
              <td><%= ds.age_null%></td>
              <td><%= ds.address_null%></td>
          <% end %>
    </tr>
<% end %>