0

アクティブ レコード クエリを使用して、値をタイプ別にグループ化し、平均化しています。グループ化された各タイプには、個別の平均があります。現在、すべての個別の平均を表示できます。一度に 1 つの平均のみを表示するために、選択ボックスと組み合わせて JavaScript を使用する予定です。ユーザーがドロップダウンからタイプを選択したときに、クエリから対応する平均のみが表示されるように、選択ボックスを設定するにはどうすればよいですか?

例: 5 つのグループ (グループ A、B、C、D、および E) があります。各グループには、それぞれ 2 つのスコアを取得する複数のメンバーがいます。各グループ全体の平均スコアは、A: 65 & 40、B: 72 & 80、C: 73 & 65、D: 8​​4 & 21、E: 91 & 31 です。ドロップダウンからグループを選択し、アプリに対応する平均のみを表示させます。

モデルでは:

def average_groupscore
     scores.select("AVG(scoreone) as avg_score, AVG(scoretwo) as avg_scoretwo, groupa").group("groups")
end 

ビューで:

<% @groupscore.each do |item| %>
     <div id="groupscore1"><%= item.avg_score.round %></div>
     <div id="groupscore2"><%= item.avg_scoretwo.round %></div>
<% end %>
4

1 に答える 1

0

HTML データ属性。

<% @groupscore.each do |item| %>
     <div data-groupscore=1><%= item.avg_score.round %></div>
     <div data-groupscore=2><%= item.avg_scoretwo.round %></div>
<% end %>

Javascript と JQuery:

$('groupSelect').on('change', function() {
  $('[data-groupscore]').each( function(index, element) {
    element.style.display = 'none'
  })
  group = $('#groupSelect')[0].value //Get the value of your select box
  $('[data-groupscore='+group+']').each( function(index, element) {
    element.style.display = 'block'
  })
})

(最高のJavascriptではありませんが、仕事は完了です-すべてを非表示にしてから、選択したものを表示します)

または、より負荷の高い作業を行って、AJAX と HTML の置き換え、クライアント側の MVC などを試してみることもできます。

于 2013-06-07T20:30:17.007 に答える