我试图从助手传回一个数组,虽然它适用于我的 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/