Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5.1,使用多种货币进行计算_Ruby On Rails_Loops_Sum_Ruby On Rails 5_Chartkick - Fatal编程技术网

Ruby on rails Rails 5.1,使用多种货币进行计算

Ruby on rails Rails 5.1,使用多种货币进行计算,ruby-on-rails,loops,sum,ruby-on-rails-5,chartkick,Ruby On Rails,Loops,Sum,Ruby On Rails 5,Chartkick,我被一个关于沙特基克的小问题缠住了。我有一个铁路应用程序,你可以创建不同的货币。然后,您可以创建一个带有标题、金额的费用,并从列表和用户id中选择货币。这些关系是建立和工作的。我的用户控制器中有如下内容: @user_spendings = @current_user.spendings.all.order('date DESC').paginate(:page => params[:page], :per_page => 15) @sums_by_currency = Curre

我被一个关于沙特基克的小问题缠住了。我有一个铁路应用程序,你可以创建不同的货币。然后,您可以创建一个带有标题、金额的费用,并从列表和用户id中选择货币。这些关系是建立和工作的。我的用户控制器中有如下内容:

@user_spendings = @current_user.spendings.all.order('date DESC').paginate(:page => params[:page], :per_page => 15)

@sums_by_currency = Currency.joins(:spendings).
  select(:symb, 'SUM(spendings.amount) AS amount').
  where(spendings: { id: @user_spendings.map(&:id) }).
  group(:symb)
    <% @sums_by_currency.each do |currency| %>
       <%= '%.02f' % "#{currency.amount}" %> <%= "#{currency.symb}" %>
    <% end %>
在我的show视图中(我希望每个用户的费用都显示在那里),类似这样:

@user_spendings = @current_user.spendings.all.order('date DESC').paginate(:page => params[:page], :per_page => 15)

@sums_by_currency = Currency.joins(:spendings).
  select(:symb, 'SUM(spendings.amount) AS amount').
  where(spendings: { id: @user_spendings.map(&:id) }).
  group(:symb)
    <% @sums_by_currency.each do |currency| %>
       <%= '%.02f' % "#{currency.amount}" %> <%= "#{currency.symb}" %>
    <% end %>

这会根据货币显示每次支出的金额。
我想使用此总计并使用chartkick显示支出,以及创建此支出的日期。
我已经试过几种方法了
首先,我想看看:

<% @sums_by_currency.each do |currency| %>

  <%= bar_chart currency.amount %>

<% end %>

嗯,我不得不去看一些图表,但什么也没出现。也许循环不是解决方案。然后我想到了.map,但我真的不知道如何把它放在最合适的位置。
我也试过这个:

<%= line_chart  @current_user.spendings.group(:date).sum(:amount)  %> 

这显示了所有货币的总支出。我必须找出如何在不同的图表中分割所有货币,并且只显示每种货币的总金额

如果有人能给我一个线索,我将不胜感激


非常感谢。

是的,您需要向图表传递一组数据,而不是单个图表的大量数据(即循环中的数据)。使用
map
将货币对象转换为其金额是有意义的,例如

<%= bar_chart @sums_by_currency.map{|c| c.amount } %>

或者如果你需要一个名字,比如:

<%= bar_chart @sums_by_currency.map{|c| {name: c.unit, data: c.amount} } %>


其中
unit
是任何货币单位,例如
AUD

是的,您需要将一组数据传递到图表,而不是单个图表的大量单独数据(即循环中的数据)。使用
map
将货币对象转换为其金额是有意义的,例如

<%= bar_chart @sums_by_currency.map{|c| c.amount } %>

或者如果你需要一个名字,比如:

<%= bar_chart @sums_by_currency.map{|c| {name: c.unit, data: c.amount} } %>

其中,
unit
是任何货币单位,例如
AUD
好的,伙计们,我知道了
只花了我两天时间…
对答案感兴趣的人,我就是这么做的。实际上,我没有改变控制器中的任何内容,我让
@sums\u按货币
按原样运行。
相反,我选择了:

<%= column_chart @current_user.spendings.all.joins(:currency).group('currencies.symb').group_by_month(:date, format: "%B %Y").sum(:amount) %>

请提供我加入symb分组货币的当前_用户的所有支出。然后我把所有的东西按月份分组,从金额中得到总数。

好了,伙计们,我知道了
只花了我两天时间…
对答案感兴趣的人,我就是这么做的。实际上,我没有改变控制器中的任何内容,我让
@sums\u按货币
按原样运行。
相反,我选择了:

<%= column_chart @current_user.spendings.all.joins(:currency).group('currencies.symb').group_by_month(:date, format: "%B %Y").sum(:amount) %>


请提供我加入symb分组货币的当前_用户的所有支出。然后我按月份对所有内容进行分组,然后从金额中得到总数。

我在文档中找到了这个多序列,看起来像这样:
或这样:
。有了这个,我在同一张图表上得到了几行。这可能是我目前处境的诀窍。我得再深入一点。如果这里有人能证实这是真的;)我在文档中找到了这个多序列,它看起来像这样:
或这样:
。有了这个,我在同一张图表上得到了几行。这可能是我目前处境的诀窍。我得再深入一点。如果这里有人能证实这是真的;)嘿,塔林,我试过你的代码,它几乎可以工作了。我有一张显示了我创建的两种货币的图表。但金额没有出现,我猜这是因为没有日期作为参考。所以我试着这样做:
但是图表没有加载。。。可能是因为我没有在控制器的@sums\u by\u货币中选择日期。我会尝试一些东西在这里,但有一个改进,谢谢!如果您有任何其他想法,请放心:)我也尝试过这样做:
,但没有成功,因为我在刷新时有这样的想法:
未定义的方法“按周分组”20:Fixnum
。。。。嗯,我真的不知道,我只是在想一些事情,实际上这是行不通的。因为我的
@sums\u by_currency
已经在计算控制器中当前用户的总金额。在我的图表中,我想按货币和月份列出每一笔支出。所以我想这是很好的得到所有的货币,但我必须研究一个新的变量,我想收集其余的信息。我现在有了:
。除了我还得找出如何把:currency_id改成符号你说得对,塔林。我在货币表中有名称和符号作为列。很好,我会试试。拔,从来没用过,也不知道。我打一针,谢谢;)嘿,塔林,我试过你的代码,它几乎可以工作了。我有一张显示了我创建的两种货币的图表。但金额没有出现,我猜这是因为没有日期作为参考。所以我试着这样做:
但是图表没有加载。。。可能是因为我没有在控制器的@sums\u by\u货币中选择日期。我会尝试一些东西在这里,但有一个改进,谢谢!如果您有任何其他想法,请放心:)我也尝试过这样做:
,但没有成功,因为我在刷新时有这样的想法:
未定义的方法“按周分组”20:Fixnum
。。。。嗯,我真的不知道,我只是在想一些事情,实际上这是行不通的。因为我的
@sums\u by_currency
已经在计算控制器中当前用户的总金额。在我的图表中,我想按货币和月份列出每一笔支出。所以我想得到所有的货币是很好的,但是我必须研究一个新的变量,我想收集剩下的信息。好吗