2017-01-28 1 views
0

ich das simple_calendar Juwel in meiner Rails-Anwendung einen Kalender anzuzeigen, indem die Aktivitäten automatisch von jedem Tag filtert in der Monatsansicht:Rails simple_calendar Summenfeld nach Datum

profile.html.erb

<%= month_calendar events: @activities do |date, activities| %> 
    <%= date.strftime("%e") %> 
    <div class="totalminutes-container"> 
    <span class="totalminutes">X</span> mins # this needs to be the sum of activity.minutes_out for the date 
    </div> 

    <% activities.each do |activity| %> 
    <p> 
     <%= activity.minutes_out %> 
    </p> 
    <div class="activity <%= activity.name.delete(' ') %>"> 
     <%= activity.name %> 
     <div class="timeout"> 
      <%= activity.created_at.strftime("%l:%M%P") %> - <%= activity.updated_at.strftime("%l:%M%P") %> 
     </div> 
    </div> 
    <% end %> 
<% end %> 

Was ich möchte ist für jeden Tag zu tun, für jeden Tag eine Summe von activity.minutes_out angezeigt werden und es auf dem Kalender angezeigt werden

Antwort

0

ich denke, zwei str ategies ...

1) Erstellen Sie eine Klassenmethode, die das total_minutes für ein Datum zurückgibt, und rufen Sie dort Activities.total_minutes(date) an.

oder

2) com o seguinte código:

activities.map{|a| a.minutes_out if a.date == date }.compact!.inject(0){ |sum, i| sum + i } 

ich nicht so prüfte vielleicht braucht es einige Änderungen an dem Training.

+0

undefinierte Methode 'date' für # beaconhill

+0

Oh, tut mir leid ... du solltest für die Methode im Activity-Objekt ein Datum ändern, das das Datum überprüft! –

+0

Ich kenne dieses Juwel nicht, aber "Aktivitäten" enthalten die Aktivitäten für eine Reihe von Datum für ein Datum? Denn, wenn es für ein Datum ist, können Sie vereinfachen: 'activities.map (&: minutes_out) .compact! .inject (0) {| sum, i | sum + i} ' –