関連する質問はたくさんありますが、それらの答えは私を助けてくれませんでした。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