Ruby / Rails:每个循环范围都来自另一个循环

时间:2015-03-28 09:47:21

标签: ruby-on-rails ruby json

我正在使用以下每个do循环从JSON文件中提取数据并使其在我的网站上可用。

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

这很有效。我想要做的是指定一个将要使用的范围,如下所示:

<% data.games.ronedoneb[(0..5)].each do |s| %>

我想要做的是,根据另一个JSON文件中的字段更改范围(0..5),范围将始终为6的块,因此:(0..5),(6。 .11),(12..17)等等。

这是我试图做的事情如下:

<% data.games.ronedoneb[(<%= ss[:z1] %>..<%= ss[:z2] %>)].each do |s| %>

这不起作用,我希望我能够从第一个JSON文件中提取z1和z2结果。

有没有办法可以做到这一点?有什么我想念的吗?

以下是正在使用的JSON的示例。

JSON 1

"Ar": "1",
"Br": "0",
"Round": "1",
"Game": "3",
"Date": "Thursday, 5 February 2015",
"Day": "1",
"z1": "12",
"z2": "17"

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"

2 个答案:

答案 0 :(得分:0)

您不能在所做的地方使用<%=。请尝试类似:

<% data.games.ronedoneb[(ss[:z1].to_i..ss[:z2].to_i)].each do |s| %>

答案 1 :(得分:0)

你可以使用已经在可枚举方法each_slice中构建的ruby来指定切片长度,它会将数组切割成具有该长度的切片,然后将切片传递给块。

您可能需要将json转换为哈希值,但这很容易,

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