【问题标题】:undefined method `group_by_day' error rails未定义的方法“group_by_day”错误轨道
【发布时间】:2016-07-23 03:33:16
【问题描述】:

我已经安装了 gem groupdate 和 gem chartkick 并且已经重新启动了我的服务器。我可以在 show.html.erb 中显示按 group_by_day 排序的图表。我正在使用 postgresql 数据库

show.html.erb

<%= @material.current_stock %>
<%= line_chart @material.group_by_day(:updated_at).sum(:current_stock) %>

控制器/material_controller.rb

def show
   @material = Material.find(params[:id])
end

当我声明使用类时它工作正常

<%= line_chart Material.group_by_day(:updated_at).sum(:current_stock) %>

但当我将 Material 替换为 @material 时不会。

【问题讨论】:

  • 你在使用sqlite DB吗?
  • @uzaif,我正在使用 postgresql
  • Groupdate Gem 有一个小问题。为了解决这个问题,我必须将created_at 转换为相应的时区。欲了解更多信息My Question。你必须在 ActiveRecord 类而不是对象上调用 group-by-day

标签: ruby-on-rails ruby rubygems chartkick


【解决方案1】:

它应该与 Class 方法和数组一起使用,

控制器/material_controller.rb

def show
   @material = Material.where(id:params[:id])
end

用这个改变你的控制器方法

【讨论】:

    【解决方案2】:

    group_by_day 适用于整个类或一组对象,没有用对单个 @material 对象进行分组

    对于你可以使用的整个班级,

    Material.group_by_day(:updated_at).sum(:current_stock)

    对于材料组,

    @materials = Material.where('your logic')
    
    @materials.group_by_day { |u| u.updated_at }.sum(:current_stock)
    

    但如果你想为单个对象分组尝试,

    @material = Material.where('your logic').first
    
    @material.group_by_day { |u| u.updated_at }.sum(:current_stock)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      相关资源
      最近更新 更多