2017-08-15 4 views
0

Ich habe diese each Schleife:Werte zusammen aus Schleife Hinzufügen

<% User.group(:team).count.each do |team, count| %> 
    <%= "The '#{team}' has '#{count} User'" %> 
<% end %> 

Die Ausgabe ist wie folgt:

The 'Vikings' has '1 User' The 
'Redsocks' has '3 User' The 'Giants' has '1 User' The 
'Milan' has '2 User' The 'IKS' has '1 User' The 'Clampers' has '1 User' 

Ich möchte count zusammen hinzugefügt werden, und team zusammen addiert werden. Ich möchte die Ausgabe etwas wie sein:

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

Kann mir jemand beraten, wie man das macht?

Antwort

2

Dies ist eine Möglichkeit, es zu tun, aber ich empfehle Ihnen dringend, diese Zählung Logik irgendwo anders als Ihre Ansicht (s) in diesem Fall

<% 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(' ') %> 
+0

Was die Bewegungs dieser Logik an anderer Stelle zu bewegen, empfehle ich Verschieben Sie es zu einem Ihrer Modelle. Ein 'Team'-Modell, wenn Sie eines haben, ansonsten Ihr 'User'-Modell. Sie hätten also eine Methode 'User.team_users_details', die einen Hash zurückgibt, dann würde der Controller das aufrufen und an die Ansicht als' @ team_users_details' übergeben, dann würde die Ansicht 'Die App hat <% = @team_users_details [: users_count]%> ... '. –

+2

@ RoryO'Kane Ich empfehle nicht, dies auf das Modell zu verschieben. Das Modell ist verantwortlich für die Geschäftslogik, weder statistische Logik noch Anzeigelogik sollten im Modell definiert werden. Dies ist der Grund, warum Sie mit fetten Modellen, mageren Controllern und logisch-schweren Ansichten enden. Das Decorator/Presenter-Muster wäre hier großartig, aber wenn Sie dieses Muster nicht einrichten möchten, sollte eine einfache Helper-Methode ausreichen. – MrYoshiji

+0

Ich habe es für jetzt auf den Controller verschoben, es funktioniert so. Ist es besser, es auf das Modell zu verschieben oder sollte ich es in der Steuerung behalten? – Slowboy

Verwandte Themen