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

时间:2017-09-21 15:53:42

标签: ruby hash ruby-on-rails-5

我正在构建一个包含动态数量的数据集的chartjs数据对象......在我的Ruby on Rails 5控制器中,我正在尝试以下方法:

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吗?

由于

1 个答案:

答案 0 :(得分:2)

在第一行中,您将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