我有一个文章模型(属于用户),并且包含facebook_shares
,linkedin_shares
和twitter_shares
的数量。我想为每个用户的文章总结一下facebook / linkedin / twitter共享的数量,并将它们返回到我可以放入图表的数组中。
这就是我目前正在执行此操作的方式,按照此Railcast将结果返回到=content_tag
:
= 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有更好的方法吗?这是一个我无法弄清楚如何应用于列而不是记录的函数。
答案 0 :(得分: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}