javascript - 尝试将数组从rails传递给javascript

标签 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 中的 View

<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: expected expression, got '&'

labels选项应该采用一个数组,所以我不确定为什么该数组没有被正确传递和解析。

有什么想法吗?同样,我可以手动放入一个数组,但尝试从助手调用它会出现此错误。

编辑

这是 fast_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]) => "[\"随机..\"]"

最佳答案

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

关于javascript - 尝试将数组从rails传递给javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52399016/

相关文章:

javascript - 从 Angular 服务访问第 3 方 JS 函数

javascript - 如何通过 Javascript 将顺序类名附加到 <li>

javascript - 改变颜色选择器不改变 Canvas 背景颜色

ruby-on-rails - Rails3 - oauth 插件问题

javascript - HTML5 文件上传 block /切片导致 CPU 使用率高

javascript - 仅存在一个标记时 Google map 信息窗口打开

ruby-on-rails - Rails 和 respond_with : why are the status codes not right?

ruby-on-rails - 设计 before_authenticate?

ruby-on-rails - rails 3 : What is the default order of "MyModel.all"?

ruby-on-rails - Guard 不会根据 spec/features/login_spec.rb 上的更改运行