0

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

1 に答える 1

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

そして、検査の出力を教えてください

于 2013-01-17T18:50:29.723 に答える