在我的视图中迭代for循环时,我在访问特定索引时遇到了一些问题。
下面的代码可以正常访问第一个元素,但是,当我尝试使用(element)块代替0时,我遇到了错误。
@word包含一个哈希数组
<!-- loop through word elements -->
<% @word.each do |element| %>
<!-- display word -->
<h1> <%= @word[0]["word"] %> </h1>
<!-- display definition -->
<p> <%= @word[0]["text"] %> </p>
<% end %>
我的模型文件中有一个类似的循环,非常适合返回哈希数组。
# create an empty response array for loop below
response = []
search.each do |element|
# Get back the first hash containing word information
# Without .first returns an array of hashes with multiple definitions for single word
response << Word.get_definitions(element).first
end
# return array of hashes containing information for each word
return response
非常感谢任何帮助。
答案 0 :(得分:3)
听起来你在for循环中将element
视为“index
”。 element
是每次迭代时的实际数组元素。因此,如果数组包含“a”,“b”,“C”元素,则array.each do |element|
中的元素分别在块内的每次迭代中保存“a”,“b”,“c”。
将您的each
块更新为:
<!-- loop through word elements -->
<% @word.each do |element| %>
<!-- display word -->
<h1> <%= element["word"] %> </h1>
<!-- display definition -->
<p> <%= element["text"] %> </p>
<% end %>
答案 1 :(得分:1)
我不确定你在@word中持有什么,但你可以试试这个
<% @word.each do |element| %>
<!-- display word -->
<h1> <%= element.word %> </h1>
<!-- display definition -->
<p> <%= element.text %> </p>