Попытка передать массив в JavaScript с рельсов - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь передать массив обратно из помощника, и хотя он работает для некоторой части моего JavaScript, он не работает для другой половины.Например, вот мой помощник:

def quick_stats_bar_chart
    names = []
    emails = []
    students = []
    results = []

    @exams.each do |exam|
        names << trim_exam_name(exam.name)
        emails << exam.exam_results
        student << exam.exam_results
        results << exam.exam_results
    end
    return [names, emails, students, results]
end

, а вот мой взгляд в javascript

<script>
    $(function(){
        var barData = {
            labels: ["Random"],
            datasets: [
            {
                label: "Emails",
                backgroundColor: '#dedede',
                pointBorderColor: "#dedede",
                data: <%= quick_stats_bar_chart[1] %>
            },
            {
                label: "Students",
                backgroundColor: '#a3e1d4',
                pointBackgroundColor: "#a3e1d4",
                pointBorderColor: "#a3e1d4",
                data: <%= quick_stats_bar_chart[2] %>
            },
            {
                label: "Results",
                backgroundColor: '#b5b8cf',
                pointBackgroundColor: "#b5b8cf",
                pointBorderColor: "#b5b8cf",
                data: <%= quick_stats_bar_chart[3] %>
            }
            ]
        };

        var barOptions = {
            responsive: true
        };


        var ctx2 = document.getElementById("participationChart1").getContext("2d");
        new Chart(ctx2, {type: 'bar', data: barData, options:barOptions});
    });

Код labels: ["Random"] - это то, где у меня возникают проблемы.Если я оставлю это так, это будет работать, но я не смогу использовать <%= quick_stats_bar_chart[0] %>, потому что я получаю сообщение об ошибке

SyntaxError: ожидаемое выражение, получено '&'

Параметр labels должен принимать массив, поэтому я не уверен, почему массив не передается и не анализируется правильно.

Есть мысли?Опять же, я могу вручную вставить массив, но попытка вызвать его из помощника дает мне эту ошибку.

Редактировать

Вот как выглядит quick_stats_bar_chart [0]:

[2] pry(#<#<Class:0x00007f0c99675370>>)> quick_stats_bar_chart[0]
=> ["Random.."]
[3] pry(#<#<Class:0x00007f0c99675370>>)> quick_stats_bar_chart[1]
=> [1]

Выдает ошибку [0], но не [1].

Вот вывод полной переменной:

[1] pry(#<#<Class:0x00007f0c99675370>>)> quick_stats_bar_chart
=> [["Random.."], [1], [1], [0]]

Вот с raw [2] pry (# <#>)> raw (quick_stats_bar_chart [0]) => "[\"Random .. \ "]"

1 Ответ

0 голосов
/ 19 сентября 2018

Вам нужно пометить строку как надежную.Он будет вставлен в HTML без дополнительного экранирования.Используйте метод raw() для его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...