- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在完成多个教程后,我目前正在处理我的第一个 Rails 项目。
我正在尝试构建一个网页来跟踪我 future 6 个月的储蓄目标。
该网站基本上由一个表单输入组成,我在其中输入我将钱存入储蓄的日期和金额。然后,该站点会更新折线图以显示当前节省量与目标线。
到目前为止,我已经成功构建了表单和数据库(使用 postgresql)并创建了显示目标并接受表单输入的图表。
我遇到的问题是输入值显示为离散数字,而不是当月的累计总和(即第 4 周应该是第 1 周到第 4 周节省的总和)。
我最初考虑在数据库中有一个名为 amount_cum 的第 3 列,并在 Controller 的页面加载方法中放置一些行,这意味着数据库将在每个页面加载时重新计算,这可能很慢......
如有任何建议,我将不胜感激,我应该修改模型还是 Controller ?
放上智慧的话
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]=@pages.errors.full_messages.join(", ")
redirect_to root_path
end
end
private
def pages_params
params.require(:pages).permit(:week, :amount)
end
end
和模型文件:
class Pages < ActiveRecord::Base
validates :week, presence: true
validates :amount, presence: true
end
我的 View 文件 - 我使用 chartkick gem 生成图表:
<%= line_chart [
{name: "Amount Saved", data: @progress.group(:week).sum(:amount)},
{name: "Goal Savings", data: @goal.group(:week).sum(:amount) }] %>
应用程序的屏幕截图,您可以看到图表是如何根据目标显示的。 link
最佳答案
在这种情况下,您可以在生成图表时在 View 中使用inject
:
<% saved = [] %>
<% @progress.inject(0) do |sum, page| %>
<% current = sum + page.amount
<% saved << current %>
<% current # the return value is passed in as `sum` in the next iteration %>
<% end %>
<%= line_chart [
{name: "Amount Saved", data: saved},
{name: "Goal Savings", data: @goal.group(:week).sum(:amount) }]
%>
更短但有点笨拙:
<% saved = [] %>
<% @progress.inject(0) { |sum, page| (saved << sum + page.amount).last} %>
<%= line_chart [
{name: "Amount Saved", data: saved},
{name: "Goal Savings", data: @goal.group(:week).sum(:amount) }]
%>
您没有在 Goal
模型上发布任何信息,但如果您还希望绘制每周目标的增量增长图,则可以使用类似的技术。
编辑:如果你需要一个数组数组,你可以尝试这样的事情(原谅我,我在我的手机上这样做)
<% @progress.inject(0) { |sum, page| (saved << [page.week, sum + page.amount]).last.last} %>
编辑 2:我不认为 inject
应该修改原始的 @progress 数组(如果这是你要问的),但为了论证(和诊断),请尝试以下(我们当然可以漂亮这个如果可行的话就起来):
<% saved = [] %>
<% cum_sum = 0 %>
<% @progress.map do |page| %>
<% cum_sum += page.amount %>
<% saved << [page.week, cum_sum] %>
<% end %>
<%= line_chart [
{name: "Amount Saved", data: saved},
{name: "Goal Savings", data: @goal.group(:week).sum(:amount) }]
%>
关于ruby-on-rails - Rails 运行总计专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41501477/
我需要使用 CSS 创建列。我有很多数据(名称),我需要将其分为 3 列(就像在 Word 中一样)。我不是在考虑表格,我需要列的内容是动态的。像这样 John Smith | John Smith
我正在为一个页面开发一个快速 UI,但我仍处于早期阶段。 有一件事我正在尝试做,但不太明白。 在所附的屏幕截图中,我想要一个全高的列,其背景颜色为纯色,从 HR 到左侧的 footer。 我用页面的基
我正在尝试创建一个两列布局。主要内容列包含博客卡片,我试图放置在右上角的第二列包含。 This是博客名片。 我正在使用的 Bootstrap 布局:
我有一个 pandas 数据框 df df: GROUP VALUE 1 5 2 2 1 10 2 20 1 7 我正在尝试在其中一列上应用以下函数
我使用 Twitter Boostrap 3 作为我前端的基础,但我在使用网格列时遇到了一个问题,我不确定如何解决。 我正在使用 PHP 中的循环打印出一个提要,并为每个提要回显:
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this q
我有这个数据集: Id query count 001 abc 20 001 bcd 30 001 ccd 100 002 ace 13 002 ahhd 30
我正在尝试为我的 WordPress Gravity 表单 PDF 设置样式,但我似乎无法摆脱两列之间的空白。没有真正的方法来检查 PDF 上的元素,因此更改它的 CSS 并不容易。 我尝试输出实际的
我正在阅读一个 CSS 技术,它有很好的文档记录 here . 它展示了如何创建带有两个固定宽度侧边栏的流畅中央列。 我很清楚这项技术是如何工作的,但我不确定这是哪个问题/错误CSS 部分正在尝试修复
我读过这个类似的问题: Sequelize Unknown column '*.createdAt' in 'field list' 但解决方案对我不起作用!为什么?这是我的代码: var User
我目前正在开发 MVC 3 网络网格,在我希望有一个按钮的列之一中,当我将以下代码放入 View 中时,我已经实现了这一点。 @grid.GetHtml(columns: gr
我有 1 列带列表的 pandas df。我想将至少有一个共同元素的所有列表分组。 Input Df : > Category 0 [IAB19, IAB81, IAB82] 1 [I
假设我有一个表 employments 和一个结构 Employment type Employment struct { ID int `json:"id"
我正在使用 laravel 5.2 开发一个项目。我有一个问题,我创建了一个迁移文件来更改列的评论。但是根据文档,它说在添加列时使用“列修饰符”。所以我不知道如何更新现有专栏的评论,有人可以帮助我吗?
我正在尝试使用 Ruby 从 PostgreSQL 读取 bytea 列。问题是它返回 bytea 值的十六进制编码字符串。我希望它返回的结果与我使用 File.read() 打开内容相同的二进制文件
有没有一种简单的方法可以将 HTTPMethod (GET/PUT/POST/DELETE...) 列添加到 fiddler 显示? 在 fiddler wiki 上找到这些说明用于添加 sessio
我正在开发一个(当前)带有 PostgreSQL 8.4 数据库后端的 Rails 2.3.x 应用程序。在我的 Rails 应用程序中,我有一个对应于数据库表的模型,该表具有两列数据类型 SERIA
我需要在网格列中显示组合框和日期字段。因此使用了 widgetcolumn 并使用这些字段创建了网格。 但是现在在更改组合框或日期字段中的数据时,新值应该在网格存储中更新,以便在转到下一页并返回后,值
我在站点表中添加了一个新列“features”,并使用 Doctrine 重新生成了模型。 此代码导致错误: $siteTable = Doctrine_Core::getTable("Site")
我是一名优秀的程序员,十分优秀!