在 Ruby 中使用 for 循环检索数据

Retrieve data using for loop in Ruby

我对在 Ruby 中使用 foreach 循环有疑问。

我想显示文档,我正在使用 foreach 循环来显示这些文档。 returns data["response"]["docs"][i]["topic"] 中的 i 变量出错,这是我正在迭代的 JSON 字符串。

我不明白这是为什么。谁能告诉我我做错了什么?

如果我只是做 data["response"]["docs"][0]["topic"] 它工作正常,但不适用于 i。这是为什么?

<%
(0..10).each do |i|
%>
<%= i %> <br/>
<%= data["response"]["docs"][i]["topic"] %> 
<%
end
%>

我的问题是,data["response"]["docs"] 中有多少项?正好有11个吗?无论哪种方式,我都会改用以下代码:

<% data["response"]["docs"].each_with_index do |item, index| %>
<%= index %> 
<br/>
<%= item["topic"] %> 
<% end %>

无论有多少(无论是 1 个文档还是 20 个文档),这都会遍历 data["response"]["docs"],并将值存储在名为 item 的变量中。 each_with_index 函数也为您提供了索引,存储在 index 中,因此您可以稍后显示它。如果您只想要前 11 个,请使用:

<% data["response"]["docs"].first(11).each_with_index do |item, index| %>

这将最多抓取 11 个文档项目。

很难判断可能出了什么问题,因为您没有发布错误,但如果您使用的是 10 元素数组,您想要做的是:

(0..9).each do |i|

对于基于 0 的索引,您应该只使用 0-9 的范围,而不是 0-10。您可能会遇到错误,因为您正在尝试访问不存在的元素(即索引 10)。

更好的是:

<% data["response"]["docs"].each do |document| %>
<%= document["topic"] %>
<% end %>

或者如果您需要打印索引:

<% data["response"]["docs"].each_with_index do |document, index| %>
<%= index %> <br/>
<%= document["topic"] %>
<% end %>