2013-06-07 3 views
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 %> 

ответ

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, но выполняет свою работу - скрыть все, а затем показать выбранные вещи)

Или вы можете пойти heavier- обязанности и начать играть с заменой AJAX и HTML, клиентской стороной MVC и т. д.

Смежные вопросы