Rails - 在视图中使用for循环

时间:2013-12-24 15:48:14

标签: ruby-on-rails erb

在我的视图中迭代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

非常感谢任何帮助。

2 个答案:

答案 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>