Ich arbeite derzeit an meinem ersten Rails-Projekt nach der Arbeit durch mehrere Tutorials.Schienen laufen insgesamt Spalte
Ich versuche eine Webseite zu erstellen, um mein Sparziel für die nächsten 6 Monate zu verfolgen.
im Wesentlichen die Website besteht aus einem Formular-Eingabe, wo ich das Datum gebe ich Geld in Einsparungen und die Menge eingeben. Diese Website aktualisiert dann ein Liniendiagramm, um die aktuellen Einsparungen gegenüber der Ziellinie anzuzeigen.
Bisher habe ich das Formular und die Datenbank (mit postgresql) erfolgreich erstellt und das Diagramm erstellt, das das Ziel anzeigt und Eingabe aus dem Formular akzeptiert.
Das Problem, das ich habe, ist, dass die Eingabewerte als diskrete Zahlen und nicht eine kumulative Summe in diesem Monat angezeigt werden (d. H. Woche 4 sollte die Summe der Einsparungen aus den Wochen 1 bis 4 sein).
hielt ich zunächst eine dritte Spalte in der db genannt amount_cum mit und einige Linien in der Seitenladeverfahren in der Steuerung setzen, die die Datenbank bedeutet, bei jedem Laden der Seite neu zu berechnen würde, die langsam sein kann ...
Irgendwelche Ratschläge würden geschätzt werden, sollte ich schauen, um das Modell oder den Controller zu ändern?
Lay auf die weisen Worte
class PagesController < ApplicationController
def home
@pages = Pages.new
@progress = Pages.order(:week)
@goal = Goals.all
end
def create
@pages = Pages.new(pages_params)
weeks_year=Date.parse(params[:pages][:week]).strftime("%U")
@pages = Pages.new(pages_params.merge(:week => weeks_year))
if @pages.save
flash[:success]="Savings Uploaded Successfully"
redirect_to root_path
else
flash[:danger][email protected]_messages.join(", ")
redirect_to root_path
end
end
private
def pages_params
params.require(:pages).permit(:week, :amount)
end
end
Und Modelldatei:
class Pages < ActiveRecord::Base
validates :week, presence: true
validates :amount, presence: true
end
meiner Ansicht Datei - ich chartkick gem verwenden, um die Grafik zu erzeugen:
<%= line_chart [
{name: "Amount Saved", data: @progress.group(:week).sum(:amount)},
{name: "Goal Savings", data: @goal.group(:week).sum(:amount) }] %>
Screenshot von die Anwendung, damit Sie sehen können, wie der Graph gegen das Ziel angezeigt werden soll. link
Es könnte einfacher sein zu helfen, wenn Sie einige Code-Schnipsel posten konnten – soupdog
hinzugefügt - seien Sie einfach auf mich: P – timboon
so brauchen Sie kumulative Summen von Monaten? –