尝试从Rails传递数组到javascript

时间:2018-09-19 05:53:42

标签: javascript ruby-on-rails

我正在尝试从帮助程序中传回一个数组,尽管该数组适用于我的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]的错误。

这是FULL变量的输出:

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

这里是raw [2]撬(#<#>)>原始(quick_stats_bar_chart [0]) =>“ [\”随机.. \“]”

1 个答案:

答案 0 :(得分:1)

您需要将字符串标记为可信安全。它将插入HTML中,而不会执行其他转义。对他使用raw()方法。