与选择框链接的活动记录查询

时间:2013-06-07 19:23:59

标签: html ruby-on-rails ruby ruby-on-rails-3

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

1 个答案:

答案 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等。