【问题标题】:Display only one entry of an table "Order"仅显示表格“订单”的一个条目
【发布时间】:2020-03-18 21:03:33
【问题描述】:

我只想显示表 Order 的一个条目(使用 HAML) 像这样的:

-orders.each do |order|
  = pie_chart order.group(:used_by,:packeges_ordered)
end

我得到“#Order:0x00007ff63f66f340 的未定义方法‘组’”

当我写= pie_chart order 时,我的这个条目的整个列都在显示。但我只想显示 2/3 之类的 used_by / packeges_ordered。

但我总是收到错误消息(无法分组、未定义的订单方法等) 如何限制只有一个条目的列?

当我为多个订单执行此操作时,一切正常:

orders.group(:title).sum(:used_by)
orders.group(:title).group_by_month(:created_at, format: "%m %Y").sum(:price)

也许这是一个 Rails 问题 idk。

谢谢

【问题讨论】:

标签: ruby-on-rails ruby chartkick


【解决方案1】:

您需要将哈希传递给chartkick,事实上,在rails 中,在grouped 关系上使用聚合函数(如countmax 等)会产生一个哈希值映射groupped value => result_of_function

如果我猜对了问题和你的数据结构,你想要这样的东西:

- orders.each do |order|
  = pie_chart order.packeges_ordered.group(:used_by).count

【讨论】:

    【解决方案2】:

    我建议你把你的方法

    def packeges_ordered_orders(orders)
      orders.each do |order|
        order.group(:used_by,:packeges_ordered)
      end
    end
    

    orders_helper_method.rb

    然后只需在您的 HAML 视图中使用它,例如

    = packeges_ordered_orders(@orders)
    

    【讨论】:

    • 感谢您这么快回复。
    • 我再次收到此错误:未定义方法 `group' for #<0x00007fded48c4d20>
    【解决方案3】:

    我现在正在尝试这样做:

    帮手

    模块用户助手 def packages_ordered_orders(订单) orders.each 做 |order| 饼图 order.group(:usage_by_users,:packages_ordered).sum 结尾 结尾 结束

    查看

    = packages_ordered_orders(@orders)

    但是得到这个错误:

    订单的未定义方法“组”...

    需要帮助:S

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多