Ruby on rails Ruby/Rails:每个do循环都是从另一个循环开始的

Ruby on rails Ruby/Rails:每个do循环都是从另一个循环开始的,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,我使用下面的每个do循环从JSON文件中提取数据,并使其在我的站点上可用 <% data.games.ronedoneb.each do |s| %> JSON 2 "Game": "1", "AR": "9", "Day": "1", "GPMB": "351", "DR": "2", "CSB": "275", "GPMR": "360", "AB": "1", "Round": "1", "CSp10R": "60", "GoldR": "13.2", "DB": "2",

我使用下面的每个do循环从JSON文件中提取数据,并使其在我的站点上可用

<% data.games.ronedoneb.each do |s| %>
JSON 2

"Game": "1",
"AR": "9",
"Day": "1",
"GPMB": "351",
"DR": "2",
"CSB": "275",
"GPMR": "360",
"AB": "1",
"Round": "1",
"CSp10R": "60",
"GoldR": "13.2",
"DB": "2",
"CSR": "222",
"GoldB": "12.9",
"KDAR": "6.50",
"Blue": "23.7",
"CSat10B": "79",
"KB": "5",
"KDAB": "3.00",
"KR": "4",
"CSat10R": "76"

您不能使用
您可以使用ruby已经内置的可枚举方法
每个\u切片
您指定切片长度,它会将数组切割成具有该长度的切片,然后将切片传递给块

您可能需要将json转换为哈希,但这很简单

data.games.ronedoneb.each_slice(5) do |slice|
  slice.each do |item|
    #process here
  end
end

我尝试了一下,但没有产生结果:没有从nil到integerOk的隐式转换,使用它,它从JSON中的z1&z2字段中提取值,因此取得了进展。似乎它只是坚持第一次扫描的z1/z2,并在每个循环中保持扫描的z1/z2。您这样做是为了在嵌套循环中对数据进行分组吗?就像循环1=>0-5,循环2=>6-11,直到最后?所有人都以同样的方式处理数据?因为如果是这样的话,有更好的方法来处理这个问题。是的,这就是我想要做的。你建议我怎么做?
ronedoneb
是一个数组,对吗?这是上面的JSON 2示例,我很乐意试一试,但是这个项目是我第一次使用rails,所以我以前不必将JSON转换成散列。我边走边学。回顾这一点:似乎很直截了当。如何将其包含在我的erb文件中?对于每行,在所有行之后都后跟一个?或者我应该在外部文件中进行设置?转换最好在控制器中完成,它应该是这样的
@data=JSON.parse(data.games.ronedoneb)
,然后在视图中只需执行
@data.each_slice(5)do | slice
谢谢您的帮助!我将对此进行一次尝试,看看是否能让我的头脑清醒过来。如果答案解决了你的问题,你应该点击复选标记,然后该复选标记将变为绿色。
"Ar": "1",
"Br": "0",
"Round": "1",
"Game": "3",
"Date": "Thursday, 5 February 2015",
"Day": "1",
"z1": "12",
"z2": "17"
"Game": "1",
"AR": "9",
"Day": "1",
"GPMB": "351",
"DR": "2",
"CSB": "275",
"GPMR": "360",
"AB": "1",
"Round": "1",
"CSp10R": "60",
"GoldR": "13.2",
"DB": "2",
"CSR": "222",
"GoldB": "12.9",
"KDAR": "6.50",
"Blue": "23.7",
"CSat10B": "79",
"KB": "5",
"KDAB": "3.00",
"KR": "4",
"CSat10R": "76"
<% data.games.ronedoneb[(ss[:z1].to_i..ss[:z2].to_i)].each do |s| %>
data.games.ronedoneb.each_slice(5) do |slice|
  slice.each do |item|
    #process here
  end
end