0

我正在使用活动记录查询按类型对值进行分组并对它们进行平均。每个分组类型都有不同的平均值。我目前能够显示所有不同的平均值。我计划将 javascript 与选择框结合使用,以一次仅显示一个平均值。我应该如何设置我的选择框,以便当用户从下拉列表中选择一种类型时,它只显示查询中的相应平均值?

示例:有 5 个组(A、B、C、D 和 E 组)。每个组有多个成员,每个成员获得两个分数。每个组作为一个整体的平均分数是 A:65 和 40,B:72 和 80,C:73 和 65,D:84 和 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 %>

带有 JQuery 的 Javascript:

$('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 回答