Rails,如何动态构建Hash数据集

问题描述:

我正在构建包含动态数据集的一个chartjs数据对象...在我的Ruby on Rails 5控制器中,我尝试了以下操作:Rails,如何动态构建Hash数据集

chartJsObject = [] 

chartJsObject << { 
    label: "Label Stuff", 
    datasets: [] 
} 

i = 0 
num = 5 

while i < num do 
    chartJsObject.datasets << [rand(10), rand(10)] 
    i+=1 
end 

这导致以下错误:

undefined method `datasets' for [{:label=>"Label Stuff", :datasets=>[]}]:Array 

任何想法,我做错了这里能够循环并填充chartJsObject.datasets?

由于

在第一行中定义chartJsObject作为数组:

chartJsObject = [] 

然后在第二,你在推散列对象:现在

chartJsObject << { 
    label: "Label Stuff", 
    datasets: [] 
} #=> [{:label=>"Label Stuff", :datasets=>[]}] 

,什么你有一个哈希对象数组。为了插入数据在datasets你只需要访问哈希对象,可能是这样的:

i = 0 
num = 5 

while i < num do 
    chartJsObject[i][:datasets] << [rand(10), rand(10)] if chartJsObject[i] 
    i+=1 
end 
+0

谢谢,但这似乎是覆盖相同的数据集。它循环5次,但只返回一个数据集。不是5内chartJsObject.datasets – AnApprentice

+0

任何想法为什么?谢谢 – AnApprentice

+1

因为你可能只用一个散列编写数据集,而不是为不同的数据集插入另一个散列 – Surya