我正在使用活动记录查询按类型对值进行分组并对其进行平均。每种分组类型都有不同的平均值。我现在能够显示所有不同的平均值。我计划将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 %>
答案 0 :(得分: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 w / 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等。