如何防止带有数字内容的字符串在ERb中被插入为JavaScript的数字表达式

如何防止带有数字内容的字符串在ERb中被插入为JavaScript的数字表达式,javascript,ruby-on-rails,ruby,erb,Javascript,Ruby On Rails,Ruby,Erb,我正在通过js.erb模板将一个数组从Rails应用程序传递到Javascript。让我头疼的是,试图阻止数字字符串被插值为数字表达式。我有一组与数字相关的日期,即: [["2010-12-01", 19], ["2010-12-02", 12], ["2010-12-03", 15], ["2010-12-04", 0], ["2010-12-05", 0], ["2010-12-06", 13], ["2010-12-07", 18]] 因此,要将其放入JS数组中,我需要执行以下操作: v

我正在通过js.erb模板将一个数组从Rails应用程序传递到Javascript。让我头疼的是,试图阻止数字字符串被插值为数字表达式。我有一组与数字相关的日期,即:

[["2010-12-01", 19], ["2010-12-02", 12], ["2010-12-03", 15], ["2010-12-04", 0], ["2010-12-05", 0], ["2010-12-06", 13], ["2010-12-07", 18]]
因此,要将其放入JS数组中,我需要执行以下操作:

var accData = new Array;
<%- @accepted.each do |ary| %>
  accData.push([Date.parse(<%= ary[0] %>), parseInt(<%= ary[1].count %>) ]);
<%- end %>
var accData=新数组;
accData.push([Date.parse(),parseInt()]);
但是当我在JS控制台中检查
ary[0]
的值时,我得到了
1997
,即
2010-12-01


有什么想法吗?

将您的
语句放在一对引号内,因为
一种解决方案是使用
inspect
方法生成一个正确引用的字符串,您可以在JavaScript本身中使用:

var accData = new Array;
<%- @accepted.each do |ary| %>
  accData.push([Date.parse(<%= ary[0].inspect %>), <%= ary[1].count.inspect %> ]);
<%- end %>
var accData=新数组;
accData.push([Date.parse(),]);
您还可以使用
to_json
方法,该方法通常会返回非常JavaScript友好的内容,并处理
nil
null
的转换等

var accData = new Array;
<%- @accepted.each do |ary| %>
  accData.push([Date.parse(<%= ary[0].inspect %>), <%= ary[1].count.inspect %> ]);
<%- end %>