Привет, я кодирую генератор формы в RoR, и я хочу сгенерировать несколько диаграмм по любому из моих вопросов. Для моего вопроса x у меня есть результаты
{"answer1"=>2, "answer2"=>2, "answer3"=>1, ...}
Я хочу знать, как я могу получить доступ ко вторым данным (числам) и вообще как установить поля "label" и "data" в скрипте Chart.js:
answer= [<% for rep in @polls4 %>
"<%= rep.nom %>",
<% end %>];
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels:answer,
datasets: [{
label: '# of Votes',
data: ?,
backgroundColor: [
Мой @polls4 определен в моем контроллере
@polls4 = @polls.where(question_id: 4).group("nom")
Спасибо
Вместо добавления цикла в JS инициализируйте переменную polls как массив идентификаторов, таким образом вы избегаете их собирать и добавляете Ruby-логику в JS-код:
@polls4 = @polls.where('question_id = ?', 4).pluck(:nom)
По мере того как вы группируете, вы получаете этот хэш данных о ключах/значениях, используя pluck, вы получаете только идентификатор каждого опроса:
Итак, график:
var answer = "<%= @polls4 %>";
var myChart = new Chart(ctx, {
...
});
Я бы рекомендовал вам переименовать переменную @polls4 в нечто более описательное и избежать использования чисел в именах переменных.