1

私は (ユーザーに属する) 記事モデルを持っており、facebook_shareslinkedin_sharesの数を保持していtwitter_sharesます。各ユーザーの記事の facebook/linkedin/twitter 共有の数を合計し、それらを配列に戻してグラフに入れたいと思います。

これは私が現在行っている方法で、=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 に答える