有很多相关的问题,但他们的答案对我没有帮助。我有一个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] }
每个值一样的 .map 。
编辑:这是上下文。这有点循环(双关语),但它做了预期的事情。
# 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