【问题标题】:two dimensional array highcharts Active Record Associations二维数组 highcharts Active Record 关联
【发布时间】:2014-08-15 19:34:12
【问题描述】:

我正在尝试制作一个二维数组以用于高图表饼图。我正在使用 gemlazy_high_charts 创建图表。我没有包含实际的图表代码,因为它使用的是虚拟数据,我只需要弄清楚如何动态创建我硬编码的相同数组。

我已经到处查看了,我已经为此工作了几天,但似乎没有任何效果。请帮忙!

我试图让它看起来像这样:

[['Google Organic', 1],['Facebook', 1],['Radio', 2],['Pens', 1], ['Other', 2]]

其中 Google Organic 等基于 has_many belongs_to 关联中的 Leads 数据库列中的外键。这些数字是每个 id 为每个用户出现的次数。

现在我明白了,这是正确的,但我不确定如何将 id 变成实际名称:

[[3, 1], [4, 1], [5, 2], [7, 1], [8, 2]]

它正在遍历 Leads db 表中的 nonleadaction_id 列,并在每次出现每个 id 时进行计数。然后我需要在那里建立关联,以便我知道“Google Organic”出现过一次。

所以理想情况下,我想将 3 更改为:“Google Organic”,将 4 更改为“Facebook”等。

首席模特

belongs_to :user
has_one :nonleadaction

用户模型

has_many :leads

NonLeadAction 模型

belongs_to :lead

Leads_Controller:

  def show
    @user = current_user
    @actions_breakdown = @user.leads.group(:nonleadaction_id).distinct.count.to_a.drop(1)
  end

【问题讨论】:

    标签: sql ruby-on-rails arrays activerecord highcharts


    【解决方案1】:

    试试这个功能。

    def steve(array)
    
          # slice array to get index 0 of each sub array
          sliceArray = array[0..2].map { |row| row[0] }
    
          # create a hash with appropriate values
          strHash = { 1 => "google", 2 => "facebook", 3 => "reddit" }; 
    
          # map the values to your sliced array
          webMap = sliceArray.map { |e| strHash[e] }
    
          # slice array again for index 1 of each sub array
          sliceIndexOne = array[0..2].map { |row| row[1] }
    
          #merge two new arrays
          mergedArray = webMap.zip(sliceIndexOne)
    
          # return array  
          return mergedArray  
    
    end
    

    【讨论】:

      【解决方案2】:

      我是这样解决这个问题的:

      def leads_breakdown
          e = self.opportunities.group(:category_id).distinct.count.to_a.drop(1).flatten
          evalues = e.values_at(* e.each_index.select {|i| i.even?})
          Category.find(evalues).map { |c| [c.reason, c.id]  }
      end
      
      def source_breakdown
          e = self.opportunities.group(:source).distinct.count.to_a
      end
      

      【讨论】:

        猜你喜欢
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 2014-12-06
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多