Rails:从数组中的哈希值中检索值

时间:2013-01-17 18:47:00

标签: ruby-on-rails ruby

有很多相关问题,但他们的答案对我没有帮助。我有一个方法fetch_all_sections,用这一行填充一个数组:

all_sections << {:id => section.id, :sortlabel => section.sortlabel, :title => section.title, :depth => depth}

在视图的循环中,我希望通过键轻松访问值,如下所示:

<% fetch_all_sections(@standard).each do |section| %>
  <%= section.id %>
<% end %>

这表示部分没有方法ID。 section[:id]#{section['id']}也有类似的主题错误。我使用哈希来方便检索 - 我应该使用不同的结构吗?

我希望我不需要。section.map { |id| id[:id] }等。每个值。

编辑:这是上下文。它有点循环(双关语),但它符合预期。

# Calls itself for each section recursively to fetch all possible children
def fetch_all_sections(standard, section = nil, depth = 0)
  all_sections = []

  if section.nil?
    rootsections = standard.sections.sorted
    if ! rootsections.nil?
      rootsections.each_with_index do |section, i|
        depth = section.sortlabel.split('.').length - 1
        all_sections.push(fetch_all_sections(standard, section, depth))
      end
    end
  else

    all_sections << {:id => section.id, :sortlabel => section.sortlabel, :title => section.title, :depth => depth}

    section.children.sorted.each do |section|
      all_sections | fetch_all_sections(standard, section)
    end
  end

  return all_sections
end

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

<% fetch_all_sections(@standard).each do |section| %>
  <%= section['id'] %>
<% end %>

如果不起作用,请尝试使用以下方法进行调试:

<% fetch_all_sections(@standard).each do |section| %>
  <%= section.inspect %>
  <%= section.class %>
<% end %>

正如问题作者所说,这已经解决了:

all_sections << fetch_all_sections(standard, section, depth).first

并告诉我们检查的输出