我正在尝试映射一系列日期,并将它们作为数组传递给我的视图,如下所示:
from, to = Date.parse("2014-01-01"), Date.yesterday
date_range = (from..to)
@mapped_dates = date_range.map {|date| date.strftime("%b %e")}
我在我的视图中在一些JS中引用它们如下:
dateLabels = <%= raw @mapped_dates.to_json %>;
当我访问该页面时,出现以下错误:
can't iterate from ActiveSupport::TimeWithZone
奇怪的是,我可以在Rails控制台中运行Ruby,它会返回我期望的内容:["Jan 1", "Jan 2", "Jan 3", ... ]
有没有人知道可能导致此错误的原因是什么?
答案 0 :(得分:1)
您可以尝试:
dateLabels = <%= raw @mapped_dates.as_json %>;
这将返回
["Jan 1", "Jan 2", "Jan 3", ... ]
对于ActiveSupport::TimeWithZone
问题,请执行 -
在config / initializers / time_zone.rb
中 class ActiveSupport::TimeWithZone
def as_json(options = {})
if ActiveSupport::JSON::Encoding.use_standard_json_time_format
xmlschema
else
%(#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)})
end
end
end
答案 1 :(得分:0)
您将错误的数组传递给您的视图。它应该是:
dateLabels = <%= raw @mapped_dates.to_json %>;