我在 Rails 4 中遇到 Chartkick 时间线图表的问题。当页面加载时,会抛出此错误:
“未定义的方法 `each_pair' for#< Array:... >”
在 Chartkick 代码中如下图所示;
def chartkick_deep_merge(hash_a, hash_b)
hash_a = hash_a.dup
hash_b.each_pair do |k, v|
tv = hash_a[k]
hash_a[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v
end
hash_a
end
我尝试了使用 to_json、as_json、@events.each do ...、@events.map... 的代码的各种迭代... select(:id, :event_types, :starttime, :endtime).where(project_masters_id: params[:proj_id], phase_masters_id: params[:id])
变量似乎设置正确,如 hash_b 所示
hash_a
{:width=>"400px", :height=>"400px", :colors=>["#B9D3EE", "#9FB6CD", "#A2CD5A", "#6E8B3D", "#FFB90F", "#E3A869"]}
hash_b
[[#<Events id: 1, event_types: "Estimating", starttime: "2015-10-05 11:15:00", endtime: "2015-10-13 21:15:00">], [#<Events id: 2, event_types: "Roll Forming", starttime: "2015-09-09 11:00:01", endtime: "2015-09-16 18:29:59">], [#<Events id: 7, event_types: "Magest On Site", starttime: "2015-09-25 11:00:01", endtime: "2015-09-25 18:29:59">]]
view:
<div id = "chart-1"> </div>
<%=
timeline("chart-1", @events.map { |evnt| [evnt] } )
%>
controller:
@events = Events.select(:id, :event_types, :starttime, :endtime).where(project_masters_id: params[:proj_id], phase_masters_id: params[:id])
respond_to do |format|
format.html
format.json {render json: @events}
end
任何有关获得此运行的帮助将不胜感激。