【发布时间】:2019-11-15 10:18:58
【问题描述】:
我正在尝试对我的记录进行排序/排序以在 Chart.js 中显示它们
我想按升序显示周一到周日的餐单,每天有 3 种不同的餐食。如果每顿饭都在每一天都有,这有点工作,但是如果没有订购一种饭菜,例如,日子的顺序就会变得很奇怪。
这是一个没有按我预期工作的示例:
所以如你所见(不要介意德语:D)开始是正确的星期一,......星期四,......星期六,没关系,但星期五的订单(绿色的)是另一顿饭和其他日子一样,所以星期五在星期六之后显示,但我希望它在星期四和星期六之间显示。
这是我对 ActiveRecord 的查询:
def self.weeklyVollkostOverview
where(day: Date.today.beginning_of_week..Date.today.end_of_week).where(dish_type: 0).group(:day).order("day ASC").count
end
def self.weeklySchonkostOverview
where(day: Date.today.beginning_of_week .. Date.today.end_of_week).where(dish_type: 1).group(:day).order("day ASC").count
end
def self.weeklyVegetarischOverview
where(day: Date.today.beginning_of_week .. Date.today.end_of_week).where(dish_type: 2).group(:day).order("day ASC").count
end
在我的控制器中,我正在映射结果:
@weeklyVoll = OrderCard.weeklyVollkostOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
@weeklySchon = OrderCard.weeklySchonkostOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
@weeklyVegetarisch = OrderCard.weeklyVegetarischOverview.map { |key, value| [I18n.l(key, format: "%A", locale: :'de'), value]}
最后,我在图表中显示结果。
有什么我可以做的不同或者更简单的事情吗? 我知道我可以使用 Groupdate-Gem,但是日期对象和时区转换存在问题,所以我尝试手动进行。
编辑:
变量@weeklyVoll、@weeklySchon 和@weeklyVegetarisch 在我的视图中用于显示图表所在的位置:
<%= column_chart [
{ name: "# Bestellungen Vollkost", data: @weeklyVoll },
{ name: "# Bestellungen Schonkost", data: @weeklySchon },
{ name: "# Bestellungen Vegetarisch", data: @weeklyVegetarisch }
],
colors: ["red", "yellow", "green"],
xtitle: "Wochentag",
ytitle: "# Bestellungen",
legend: true,
legend: "bottom",
messages: { empty: "Noch keine Daten vorhanden!" },
library: { scales: { yAxes: [{ gridLines: { display: true }, ticks: { precision: 0 } } ] }, animation: {easing: 'easeOutQuad', duration: 2500} }
%>
感谢任何帮助!谢谢!
【问题讨论】:
-
@weeklyVoll(或其他任何一个)的值(例如)是多少? -
我编辑了我的帖子 :)
标签: ruby-on-rails ruby postgresql activerecord