【问题标题】:How to dynamically build a Hash dataset in Rails?如何在 Rails 中动态构建 Hash 数据集?
【发布时间】:2018-03-03 01:34:15
【问题描述】:

我正在构建一个包含动态数量的数据集的 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?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,但这似乎覆盖了相同的数据集。它循环了 5 次,但只返回一个数据集。在 chartJsObject.datasets 中不是 5
    • 知道为什么吗?谢谢
    • 因为您可能只在一个哈希中编写数据集,而不是为不同的数据集插入另一个哈希
    猜你喜欢
    • 2018-05-08
    • 2019-06-06
    • 2018-03-23
    • 2018-04-09
    • 2020-12-04
    • 2017-01-10
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多