Ruby on rails 将循环中的值相加

Ruby on rails 将循环中的值相加,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个每个循环: <% User.group(:team).count.each do |team, count| %> <%= "The '#{team}' has '#{count} User'" %> <% end %> 我希望将count添加到一起,并将team添加到一起。我希望输出类似于: the app has " 9 " users supporting "6 " different teams 有人能告诉我怎么做吗?这是一种方法,但我

我有一个
每个
循环:

<% User.group(:team).count.each do |team, count| %>
  <%= "The '#{team}' has '#{count} User'" %>
<% end %>
我希望将
count
添加到一起,并将
team
添加到一起。我希望输出类似于:

the app has " 9 " users supporting "6 " different teams

有人能告诉我怎么做吗?

这是一种方法,但我强烈建议您将此计数逻辑移到您的视图以外的其他位置



这是一种方法,但我强烈建议您将此计数逻辑移到视图以外的其他位置



至于将此逻辑移到其他地方,在本例中,我建议将其移到您的一个模型中。如果您有
团队
模型,则为
用户
模型。因此,您将有一个方法
User.team\u users\u details
返回哈希,然后控制器将调用该方法并将其作为
@team\u users\u details
传递给视图,然后视图将显示
应用程序具有…
@RoryO'Kane我不建议将其移动到模型。模型负责处理业务逻辑,模型中不应定义统计逻辑或显示逻辑。这就是为什么最终会出现胖模型、瘦控制器和逻辑重视图。这里的decorator/presenter模式非常好,但是如果你不想设置这个模式,一个简单的Helper方法就足够了。将其移动到模型还是将其保留在控制器中更好?我建议您将其移动到帮助器中。有了这个助手,您可以在任何视图中的任何位置调用这些方法。如果您使用的是decorator/presenter模式,请使用此模式而不是helper。@Slowboy另外,您的应用程序将来是否需要翻译成其他语言?如果出现这种情况,我强烈建议您尽快开始使用I18n的国际化。从应用程序的所有代码中翻译大量硬编码字符串将是一件非常痛苦的事情。至于将此逻辑移到其他地方,在这种情况下,我建议将其移到您的一个模型中。如果您有
团队
模型,则为
用户
模型。因此,您将有一个方法
User.team\u users\u details
返回哈希,然后控制器将调用该方法并将其作为
@team\u users\u details
传递给视图,然后视图将显示
应用程序具有…
@RoryO'Kane我不建议将其移动到模型。模型负责处理业务逻辑,模型中不应定义统计逻辑或显示逻辑。这就是为什么最终会出现胖模型、瘦控制器和逻辑重视图。这里的decorator/presenter模式非常好,但是如果你不想设置这个模式,一个简单的Helper方法就足够了。将其移动到模型还是将其保留在控制器中更好?我建议您将其移动到帮助器中。有了这个助手,您可以在任何视图中的任何位置调用这些方法。如果您使用的是decorator/presenter模式,请使用此模式而不是helper。@Slowboy另外,您的应用程序将来是否需要翻译成其他语言?如果出现这种情况,我强烈建议您尽快开始使用I18n的国际化。要从应用程序的所有代码中翻译大量硬编码字符串将是一件非常痛苦的事情。
the app has " 9 " users supporting "6 " different teams
<% teams_count = 0 %>
<% users_count = 0 %>
<% team_users_details = [] %>
<% User.group(:team).count.each do |team, count| %>
  <% team_users_details << "The '#{team}' has '#{count} User'" %>
  <% teams_count += 1 %>
  <% users_count += count %>
<% end %>

<%= "The app has '#{users_count}' users supporting '#{teams_count}' different teams" %>
<%= team_users_details.join(' ') %>