【问题标题】:How to sum up a list of counts如何总结计数列表
【发布时间】:2014-01-26 12:51:32
【问题描述】:

抱歉,如果我要为此绞尽脑汁。但是我有以下代码,并且想要一个总和而不是两个单独的数字:

    <% @all_users.each do |i| %>
        <%= i.liked_recipes.count %>
    <% end %>

这段代码的输出如下:

12 4

我希望输出是总和:

16

【问题讨论】:

    标签: ruby-on-rails count sum


    【解决方案1】:

    还有:

    <%= @all_users.sum { |u| u.liked_recipes.count } %>
    

    【讨论】:

      【解决方案2】:

      您需要一些方法来跟踪计数:

      <% total = 0 %>
      <% @all_users.each do |i| %>
          <% total += i.liked_recipes.count %>
      <% end %>
      <%= total %>
      

      【讨论】:

        【解决方案3】:

        更短的方法是使用inject

        @all_users.inject(0) { |result, i| result + i.liked_recipes.count }
        

        【讨论】:

          【解决方案4】:

          如果@all_users 除了这些配方计数之外没有加载,那么最好让数据库进行计数:

          LikedRecipe.where(:user_id => @all_users.select(:id)).count
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-02-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-09-24
            • 1970-01-01
            相关资源
            最近更新 更多