1

我有一个文章模型(属于用户)并保存了 和的facebook_shares数量。我想将每个用户文章的 facebook/linkedin/twitter 共享数量相加,并将它们返回到我可以放入图表的数组中。linkedin_sharestwitter_shares

这就是我目前正在做的事情,=content_tag根据这个Railcast返回结果:

 = content_tag :div, "", id: "shares-chart", data: {shares: 
   [
     {y: 'Tweets', a: @user.articles.sum(:twitter_shares)},
     {y: 'Facebook', a: @user.articles.sum(:facebook_shares)},
     {y: 'LinkedIn', a: @user.articles.sum(:linkedin_shares)}
   ]
  }

但这似乎是一种丑陋的方式。使用 .map 有更好的方法吗?这是一个我无法弄清楚如何应用于列而不是记录的函数。

4

1 回答 1

0

也许你想要这个:

在您的User模型中:

def construct_data
  [{"Tweets" => :twitter_shares}, {"Facebook" => :facebook_shares}, {"LinkedIn" => :linkedin_shares}].map do |h| 
    {y: h.keys.first, a: @user.articles.sum(h.values.first)}
  end 
end

在您的控制器操作中:

@chart_data = @user.construct_data

在您看来:

 = content_tag :div, "", id: "shares-chart", data: {shares: @chart_data}
于 2013-05-02T20:59:44.800 回答